Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用代码格式化程序时,如何逐行保留git author?_Git_Lint_Git Blame_Python Black - Fatal编程技术网

在使用代码格式化程序时,如何逐行保留git author?

在使用代码格式化程序时,如何逐行保留git author?,git,lint,git-blame,python-black,Git,Lint,Git Blame,Python Black,我们讨厌林廷。所以我们想在我们的项目中使用。不幸的是,它几乎改变了我们项目中的每一行,这将使我们失去大部分作者信息。我们在pycharm或git Dull中大量使用annotate,以确定在查看特定代码段时与谁交谈。在一次提交中更改大量文件时,如何保留此信息 编辑:由于这是的复制品,我想重点介绍“尽可能好”的方法 让我们假设lint提交是由人工(但已知)作者创建的,因此用作标志。然后是否可以创建一个类似于git-dury的输出,显示自该键lint-commit以来的所有作者以及在该提交中更改的行

我们讨厌林廷。所以我们想在我们的项目中使用。不幸的是,它几乎改变了我们项目中的每一行,这将使我们失去大部分作者信息。我们在pycharm或git Dull中大量使用
annotate
,以确定在查看特定代码段时与谁交谈。在一次提交中更改大量文件时,如何保留此信息

编辑:由于这是的复制品,我想重点介绍“尽可能好”的方法

让我们假设lint提交是由人工(但已知)作者创建的,因此用作标志。然后是否可以创建一个类似于
git-dury
的输出,显示自该键lint-commit以来的所有作者以及在该提交中更改的行的任何以前的作者


我意识到这对被拆分/合并的线路不起作用,但它至少提供了一种更快的方式,将潜在通话对象的范围限制在1,2,3人

我创建了一个脚本,它只更改给定作者的行。每个作者都可以将此应用于代码库,并保留代码作者身份


进口吉特
进口黑色
从blib2to3.pgen2.tokenize导入TokenError
新行=列表()
作者_电子邮件=”example@example.org"
filename=“setup.py”
对于提交,repo.bull('HEAD',filename)中的行:
如果author\u email==commit.author.email:
尝试:
新的附加行(
black.u str(
“\n”。连接(行),
mode=black.mode()
)
)
除:
新的线。延伸(线)
其他:
新的线。延伸(线)
打开(文件名,“w”).writelines(新行)
该脚本只能更改代码行,这对black来说是有意义的。如果作者只更改了多行语句中的一行,则不会更改它。因此,在每个作者应用脚本之后,一些行仍然需要用黑色进行更改。但是,行的数量将比以前小得多


更新可以在这里找到:

不行,git中没有任何东西可以帮助您。最后一个运行重新格式化的人将获得所有修改行的“所有权”。然而,黑色是否总是改变了一切?我认为答案很可能是“在所有情况下都是不可能的”。代码>git日志-G可能是开始使用No的一个好工具,但当然,一个拥有大约100k+行代码的项目现在将由一个作者主导,即使该作者是像
lint bot
这样的人造作者,以表示实际上有其他人“在”该行后面。可能的重复