不是在本地计算机上安装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)
这将找到当前分支从母版分支的点
https://git-scm.com/docs/git-merge-base#_operation_modes:
git merge-base --fork-point master
这将返回从diff返回的文件名,扩展名为.py(.py过滤器可能会导致过大杀伤力?)
https://git-scm.com/docs/git-diff#_description
--name-only -- "*.py"
希望听到一些反馈,或任何类似设置的示例。
美元符号很重要:它们引入变量。如果要将美元符号传递给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变量均被评估为空字符串。