2011-03-03 7 views
38

Soy consciente de que el límite de cambio de nombre por defecto es 100 y puede aumentar este valor utilizando la configuración "diff.renamelimit config"GIT: demasiados archivos saltarse cambio de nombre inexacto de detección

Lo que estoy preocupado es decir, si esta configuración es no configurado, ¿habrá una combinación incorrecta, algún código faltante? Estoy tratando de fusionar (git merge) 2 ramas que tienen grandes cambios.

¿Alguien puede arrojar más luz sobre esta configuración?

Respuesta

28

Su contenido es seguro.

Como yo lo entiendo, git en realidad no tienen ningún concepto de un rename operación de primera clase (sólo bzr hace, de los 3 grandes DVCSs): el mv es el azúcar en la parte superior de la maquinaria subyacente, que es básicamente un add y un rm. Dado que git puede rastrear el contenido que cambia durante tales operaciones, sin embargo, puede usar heurísticas para adivinar cuándo un add y un rm son en realidad un mv. Dado que eso requiere mucho más trabajo que solo mostrar lo que git realmente grabó, los documentos para git-diff explican que "... requiere O (n^2) tiempo de procesamiento donde n es el número de posibles destinos de cambio de nombre/copia" - git won ' Lo intento cuando hay demasiados archivos involucrados. La configuración que mencionas solo controla ese umbral.

+14

"Su contenido es seguro", aunque si la detección omite un archivo que fue renombrado en un lado de una combinación y cambiado en el otro, obtendrá conflictos de combinación que podría no haber tenido si se hubiera detectado el cambio de nombre. La fusión no será * incorrecta *, pero podría requerir más esfuerzo del usuario para completarla. – Cascabel

+0

Gracias Hank y Jefromi. ¿Será realmente útil configurar este "diff.renamelimit config" en cualquier situación? –

+0

Si alguien se pregunta si esta configuración es útil: sí, puede ayudarlo a fusionar sucursales cuando en una sucursal ha movido cientos de archivos y en otra ha realizado muchos cambios en esos archivos. Tenía una situación como esa cuando tenía un refactor de código enorme en una rama y un trabajo continuo en otra. – korda

Cuestiones relacionadas