Это результат моей последней фиксации/изменения в Git...
... и в Gerrit:
Есть ли объяснение различий в количестве добавленных и удаленных строк? Разный алгоритм?
Это результат моей последней фиксации/изменения в Git...
... и в Gerrit:
Есть ли объяснение различий в количестве добавленных и удаленных строк? Разный алгоритм?
Если вы нажали несколько раз, это значит, что ваша эталонная версия против чего-то другого, кроме базового, в изменении.
Каждый git фиксирует точки на весь снимок дерева git (что делает проверку или изменение любой ревизии очень быстрой и довольно постоянной). git не хранит исправления внутри, они вычисляются по требованию, когда это необходимо, например, когда вычисляются данные фиксации.
git diff
- основная команда для их вычисления, и она обрабатывает несколько алгоритмов дифференциала (как минимум, --diff-algorithm
). Кроме того, git configuration может устанавливать конкретные поведения по умолчанию (см. diff.dirstat
и diff.algorithm
configs).
Если оба инструмента/машины вычисляют данные о различиях с различными настройками diff, вы можете получить другую статистику в конце. (Я не знаю, так ли это)
Фактические изменения одинаковы. Но разница заключается в том, как GIT и GERRIT вычисляет количество строк. Скажем, у вас есть 4 версии/изменения/патчеты коммита поверх HEAD.
commit_patchset # 4
commit_patchset # 3
commit_patchset # 2
commit_patchset # 1
ГОЛОВА
Git:
Количество строк, измененных для фиксации # 4 (A1): diff между commit_patchset # 4 и commit_patch # 3
Количество строк, измененных для фиксации # 3 (B1): diff между commit_patchset # 3 и commit_patch # 2
Количество строк, измененных для commit # 2 (C1): diff между commit_patchset # 2 и commit_patch # 1
Количество строк, измененных для фиксации # 1 (D1): diff между commit_patchset # 1 и HEAD
Геррит:
Количество строк, измененных для фиксации # 4 (A2): разность между commit_patchset # 4 и BASE/HEAD
Количество строк, измененных для фиксации # 3 (B2): diff между commit_patchset # 3 и BASE/HEAD
Количество строк, измененных для фиксации # 2 (C2): diff между commit_patchset # 2 и BASE/HEAD
Количество строк, измененных для фиксации # 1 (D2): diff между commit_patchset # 1 и BASE/HEAD
Таким образом, всегда меняется количество строк.
Вы можете попросить Gerrit показать точную разницу (как GIT показывает) между версией patchset вместо BASE/HEAD, используя опцию ".." .
Например, фотографии
http://your_gerrit_url/your_change_id/4..3 дает точные строки, измененные между commit_patchset # 4 и commit_patchset # 3. Это должно соответствовать вычислениям GIT.
Надеюсь, это поможет.