将 *Black* 引入您的项目¶
注意
本指南尚未完善。欢迎贡献,您的贡献将不胜感激!
避免破坏 git blame¶
长期以来,反对转向 *Black* 等自动化代码格式化程序的一个论点是,迁移将使 git blame
的输出变得杂乱无章。这曾经是一个有效的论点,但自 Git 版本 2.23 起,Git 本身支持使用 --ignore-rev
选项 在 blame 中忽略修订版。您还可以使用 --ignore-revs-file
选项传递一个包含要忽略的修订版的列表文件。修订版所做的更改将在分配 blame 时被忽略。由被忽略的修订版修改的行将被指责为先前修改这些行的修订版。
因此,在将项目的代码风格迁移到 *Black* 时,请重新格式化所有内容并将更改提交(最好在一个大的提交中)。然后将完整的 40 个字符提交标识符放入通常称为 .git-blame-ignore-revs
的文件,该文件位于项目目录的根目录中。
# Migrate code style to Black
5b4ab991dede475d393e9d69ec388fd6bd949699
之后,您可以将该文件传递给 git blame
并查看干净且有意义的 blame 信息。
$ git blame important.py --ignore-revs-file .git-blame-ignore-revs
7a1ae265 (John Smith 2019-04-15 15:55:13 -0400 1) def very_important_function(text, file):
abdfd8b0 (Alice Doe 2019-09-23 11:39:32 -0400 2) text = text.lstrip()
7a1ae265 (John Smith 2019-04-15 15:55:13 -0400 3) with open(file, "r+") as f:
7a1ae265 (John Smith 2019-04-15 15:55:13 -0400 4) f.write(formatted)
您甚至可以配置 git
以在每次调用 git blame
时自动忽略文件中列出的修订版。
$ git config blame.ignoreRevsFile .git-blame-ignore-revs
**唯一需要注意的是,一些在线 Git 仓库(如 GitLab)尚未支持使用其本机 blame UI 忽略修订版。** 因此,blame 信息将在这些平台上包含重新格式化提交的杂乱内容。(如果您需要此功能,有一个针对 GitLab 的开放问题)。但是,GitHub 默认支持 .git-blame-ignore-revs
,用于 blame 视图。