¿Por qué Gerrit muestra una cantidad diferente de cambios que git?

Este es el resultado de mi último compromiso / cambio en Git …

enter image description here

… y en Gerrit:

enter image description here

¿Hay alguna explicación para la diferencia en el número de líneas agregadas y eliminadas? Algoritmo diferente?

Si ha presionado varias veces, es porque su versión de reference está en contra de algo que no sea la confirmación básica en el cambio.

Cada git confiere puntos a toda una instantánea del tree de git (lo que hace que revisar o modificar cualquier revisión sea muy rápido y bastante constante). Git no almacena los parches internamente, se calculan a demanda cuando se requiere, como cuando se calculan las statistics de compromiso.

git diff es el command principal para calcularlos, y maneja varios algorithms diff (ver algorithm diff al less). También la configuration de git puede establecer comportamientos de diferencia pnetworkingeterminados específicos (ver diff.dirstat y diff.algorithm ).

Si ambas herramientas / máquinas calculan las statistics de diferencias con diferentes ajustes de diferencia, es posible que obtengan diferentes statistics al final. (No sé si este es el caso)

Los cambios reales son los mismos Pero la diferencia se debe a cómo GIT y GERRIT calculan el número de líneas cambiadas. Supongamos que tiene 4 versiones / cambios / parches de confirmación de HEAD.

commit_patchset # 4
commit_patchset # 3
commit_patchset # 2
commit_patchset # 1
CABEZA

Git:
Número de líneas modificadas para commit # 4 (A1): diff entre commit_patchset # 4 y commit_patch # 3
Número de líneas modificadas para commit # 3 (B1): diff entre commit_patchset # 3 y commit_patch # 2
Número de líneas modificadas para commit # 2 (C1): diff entre commit_patchset # 2 y commit_patch # 1
Número de líneas modificadas para commit # 1 (D1): diff entre commit_patchset # 1 y HEAD

Gerrit:
Número de líneas modificadas para commit # 4 (A2): diff entre commit_patchset # 4 y BASE / HEAD
Número de líneas modificadas para commit # 3 (B2): diff entre commit_patchset # 3 y BASE / HEAD
Número de líneas modificadas para commit # 2 (C2): diff entre commit_patchset # 2 y BASE / HEAD
Número de líneas modificadas para commit # 1 (D2): diff entre commit_patchset # 1 y BASE / HEAD

Entonces, siempre el número de líneas cambiadas será diferente.

Puede pedirle a Gerrit que muestre la diferencia exacta (como lo muestra GIT) entre la versión del parche en lugar de BASE / HEAD usando la opción ".." .
Por ejemplo,
http: //your_gerrit_url/your_change_id/4..3 le proporciona las líneas exactas cambiadas entre commit_patchset # 4 y commit_patchset # 3. Esto debería coincidir con los cálculos GIT.

Espero eso ayude.