gpt4 book ai didi

git - 使用代码格式化程序时如何逐行保留 git 作者?

转载 作者:行者123 更新时间:2023-12-03 17:30:42 28 4
gpt4 key购买 nike

我们厌倦了掉毛。所以我们要使用 black在我们的项目中。不幸的是,它几乎改变了我们项目中的所有其他行,这会使我们丢失大部分作者信息。我们使用 annotate在 pycharm 或 git blame在查看特定代码片段时,需要弄清楚与谁交谈。在一次提交中更改大量文件时,如何保留这些信息?

编辑 : 因为这是 this question 的副本,我想更专注于“尽可能好”的方法。

让我们假设 lint 提交是由人工(但已知)作者创建的,因此用作标志。那么是否可以创建一个 git blame像显示自此关键 lint 提交以来的所有作者以及在该提交中更改的行的任何先前作者的输出?

我意识到这对于拆分/merge 的线路效果不佳,但它至少提供了一种更快的方法来限制潜在人员与 1、2、3 人交谈的范围。

最佳答案

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


import git
import black
from blib2to3.pgen2.tokenize import TokenError

new_lines = list()
author_email = "example@example.org"
filename = "setup.py"
for commit, lines in repo.blame('HEAD', filename):
if author_email == commit.author.email:
try:
new_lines.append(
black.format_str(
"\n".join(lines),
mode=black.Mode()
)
)
except:
new_lines.extend(lines)
else:
new_lines.extend(lines)
open(filename, "w").writelines(new_lines)
该脚本只能将一起有意义的代码行更改为黑色。如果作者只更改了多行语句中的一行,则不会更改它。所以每个作者应用脚本后,仍有一些行需要改黑。但是,行的数量将比以前少得多。
更新可以在这里找到: https://gist.github.com/JulianWgs/ba762ba729d8f17090cafd5230261ab2

关于git - 使用代码格式化程序时如何逐行保留 git 作者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54630487/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com