0

我没有在本地机器上安装 Black,而是尝试从 Docker 容器运行 Black(从 requirements.txt 安装)。我正在寻找添加一个 Makefile 命令来格式化修改后的文件。到目前为止,这是我想出的,它的运行方式是make format

# formats any files which differ from the point at which the current branch (2) forked from master (1)
# ____1_____________ master
#     \__________ dev
#          \_________2 current_branch
diff_files := $(shell git diff $(git merge-base --fork-point master) --name-only -- "*.py")
format:
    docker-compose run --rm api black $(diff_files)

这会找到当前分支从 master 分支的点

https://git-scm.com/docs/git-merge-base#_operation_modes

git merge-base --fork-point master

这将返回从带有 .py 扩展名的 diff 返回的文件名(.py 过滤器可能是矫枉过正?)

https://git-scm.com/docs/git-diff#_description

--name-only -- "*.py"

希望听到一些反馈,或任何类似设置的示例。

4

1 回答 1

1

美元符号很重要:它们引入了变量。如果你想将一个美元符号传递给一个 shell 脚本,比如在一个$(shell ..)函数中,你需要将它们写成$$

diff_files := $(shell git diff $$(git merge-base --fork-point master) --name-only -- "*.py")

否则,make 认为这$(git merge-base --fork-point master)是一个长且看起来很奇怪的 make 变量,并且所有未定义的 make 变量都被评估为空字符串。

于 2020-06-13T21:30:03.277 回答