为什么Gerrit显示的变化数量与git不同?

时间:2015-04-24 13:32:12

标签: git gerrit

这是我最近在Git中提交/更改的结果......

enter image description here

......在Gerrit:

enter image description here

是否有任何关于添加和删除的行数差异的解释?不同的算法?

3 个答案:

答案 0 :(得分:1)

实际变化相同。但不同之处在于GIT和GERRIT如何计算更改的行数。假设您在HEAD之上有4个版本/更改/补丁集。

commit_patchset#4
commit_patchset#3
commit_patchset#2
commit_patchset#1
HEAD

<强> GIT中:
提交#4(A1)更改的行数:commit_patchset#4和commit_patch#3之间的差异 提交#3(B1)更改的行数:commit_patchset#3和commit_patch#2之间的差异 提交#2(C1)更改的行数:commit_patchset#2和commit_patch#1之间的差异 提交#1(D1)更改的行数:commit_patchset#1和HEAD

之间的差异

<强>格里特:
提交#4(A2)更改的行数:commit_patchset#4和BASE / HEAD之间的差异 提交#3(B2)更改的行数:commit_patchset#3和BASE / HEAD之间的差异 提交#2(C2)更改的行数:commit_patchset#2和BASE / HEAD之间的差异 提交#1(D2)更改的行数:commit_patchset#1和BASE / HEAD之间的差异

所以总是改变的行数会有所不同。

你可以要求Gerrit使用&#34; ..&#34; 选项显示补丁集版本而不是BASE / HEAD之间的确切差异(如GIT所示)。
例如,
http://your_gerrit_url/your_change_id/4..3 为您提供commit_patchset#4和commit_patchset#3之间更改的确切行。这应与GIT计算相匹配。

希望它有所帮助。

答案 1 :(得分:0)

如果您已多次推送,那么因为您的参考版本与更改中的基本提交不同。

答案 2 :(得分:0)

每个git都会指向一个完整的git树快照(这使得任何修订的检查或差异非常快且非常恒定)。 Git不会在内部存储补丁,它们会在需要时按需计算,例如计算提交统计数据时。

git diff是计算它们的主要命令,它处理几种diff算法(至少参见--diff-algorithm)。此外,git configuration可以设置特定的默认差异行为(请参阅diff.dirstatdiff.algorithm配置)。

如果两个工具/机器都使用不同的差异设置计算差异统计数据,那么最后可能会得到不同的统计数据。 (我不知道是不是这样)