2015-04-24 43 views
14

这是我的Git最新提交/变化的结果...为什么Gerrit会显示与git不同数量的更改?

enter image description here

...在格里特:

enter image description here

是否有数量差异作出解释行添加和删除?不同的算法?

+0

Gerrit不应该显示不同的数字。你能链接到gerrit上的变化吗? – Mureinik

+5

'Gerrit'使用'jgit'。有一个'jgit'二进制文件可用。尝试在提交时运行'jgit show'并检查'jgit'和'git'产生的差异是否不同。我记得我遇到过类似的情况。 –

+0

这是提交之前还是之后?是否存在(隐形)重设和/或合并发生? – kdopen

回答

0

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

0

每个git提交指向整个git树快照(这使得检查或比较任何修订非常快速和相当恒定的时间)。 Git不在内部存储修补程序,它们在需要时按需计算,例如计算提交统计信息时。

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

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

0

实际更改是相同的。但差异在于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之间的差异
Num线BER改变提交#2(C1):commit_patchset#2和commit_patch#1
行数之间差异改变提交#1(D1):commit_patchset#1和头部之间的diff

格里特:改变提交
行数#4(A2):commit_patchset#3和基极之间的差异/ HEAD
数:commit_patchset#4和BASE/HEAD改变提交
行数#3(B2)之间的差异在commit_patchset#2和BASE/HEAD之间的差异更改为commit#2(C2):diff之间的差异
commit#1(D2):commit_patchset#1之间的差异和BASE/HEAD

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

您可以要求Gerrit使用“..”选项显示patchset版本之间的确切区别(如GIT所示),而不是BASE/HEAD。
例如,
http://your_gerrit_url/your_change_id/4..3给出了在commit_patchset#4和commit_patchset#3之间更改的确切行。这应该符合GIT计算。

希望它有帮助。

相关问题