Github 的 PR 比较算法:你能交换它吗?

Tom*_*mmy 5 github

(注意:Github 使用情况出现在 Stack Overflow 上询问的 GitHub 问题范围内 )

即使在同一函数内移动代码的 PR 在 Github 上显得非常繁重,即使它们不做任何其他事情。我创建了一个非常基本的 PR 来演示这一点:https://github.com/tommyjcarpenter/github_test/pull/1/commits/2afb07ec5c6b56724bd10c6b56386299493bbb43。存储库所做的只是定义两个函数,然后 PR 进行更改以将第一个函数移至第二个函数下方。github 上的差异显示删除了 20 行,添加了 21 行。人们会假设差异可以显示为一个微不足道的“代码移动”。

现在想象一下,它有更多的功能和更多的琐碎代码移动。

看来 git 本身能够检测到此类更改:Using Git diff to detector code moving + How to use diff options

那么,有没有一种方法可以替换 diffing 算法,让这样的 PR 看起来不那么繁重呢?github 使用它自己的内部算法还是使用您的默认比较算法?

(编辑:这似乎也使 Github 上的帐户级贡献有点误导:只是移动代码的人可能会在存储库中进行大量添加和删除,从而给人留下他们是大型贡献者的印象,而实际上他们没有贡献任何功能)

mik*_*ang 5

我怀疑如果存在这种功能,那么它将是一个隐藏功能,例如隐藏差异中的空格。

我认为 Github 实施不同差异算法面临的挑战是对贡献指标的影响。现在必须使用所使用的算法对贡献指标(即贡献者、PR 大小)进行脚注,以便正确审核和审查更改。

作为解决方法,您可以将格式提交与功能更改提交分开,以便至少能够通过提交历史记录区分两者。