2011-04-14 9 views
11

Estoy fusionando dos ramas en git, teniendo una semana de trabajo y cada uno de los archivos movidos o renombrados y modificados.Cómo le digo a Git que tiene movimientos/cambia el nombre incorrectos (falsos positivos)

Git parece obtener las cosas completamente mal en algunos casos y dice que el archivo a se movió al archivo b cuando en realidad no tienen ninguna relación.

Tengo bastantes positivos falsos (aproximadamente el 25%). Me gustaría influir en el algoritmo que Git usa para determinar si un archivo fue movido, renombrado o es nuevo.

  • Me gustaría asignar una mayor prioridad a los nombres. (El archivo a se movió de la carpeta foo a la carpeta b) pero git insiste en que fue renombrado como archivo b en la carpeta foo - sin relación alguna)
  • Me gustaría subir el índice de similitud por encima del cual Git considera un archivo renombrar/mover

Sé que he leído en algún lugar que puedo hacer lo último y espero que pueda hacer lo primero también, pero mis habilidades de google me están fallando hoy.

+2

Tenga en cuenta que incluso si encuentra una forma de alterar la heurística, solo se aplicará a su máquina local. Así como el comando 'git mv' es una abreviatura para' git rm' y 'git add', no se conservan metadatos sobre el cambio de nombre. –

+0

aye. Eso está más que bien. En este momento cuando hago diff parece basura y no puedo decir qué ha cambiado realmente. Y ese es mi objetivo aquí: ser capaz de ver de manera confiable lo que * realmente * cambió y ajustar si es necesario. –

Respuesta

5

Me he dado cuenta de esto también. Creo que "--find-renames = 90" será más estricto que el predeterminado.

De la documentación git diff http://git-scm.com/docs/git-diff

-M [n] --find-cambios de nombre [= n] Detectar cambios de nombre. Si se especifica n, es a es un umbral en el índice de similitud (es decir, cantidad de adiciones/eliminaciones en comparación con el tamaño del archivo). Por ejemplo, -M90% significa que git debería considerar un par de eliminar/agregar para cambiar el nombre si más del 90% del archivo no ha cambiado.

-C [n] --find-copias [= n] Detecta copias y cambia el nombre. Ver también --find-copies-harder. Si se especifica n, tiene el mismo significado que para -Mn.

+0

Parece que la documentación se movió desde kernel.org, ¿hay otro lugar para buscarla? – R0MANARMY

+0

Esto me está costando un error. ¿Puedes ser un poco más específico acerca de la sintaxis por favor? git --find-renames = 100 Opción desconocida: --find-renames = 100 – anon58192932

Cuestiones relacionadas