2015-04-24 44 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計算。

希望它有幫助。

相關問題