En git, ¿cómo puedo boost el context para las fusiones?

Cuando fusiono grandes cambios, git a menudo se confunde irremediablemente porque no usa suficientes líneas de context. Se mezcla entre las terminaciones de aspecto similar de dos subrutinas diferentes que terminan con:

. return 1; . } 

(puntos usados ​​aquí para representar líneas en blanco)

Cuando uso 'git diff', puedo decir -U20 para ver 20 líneas de context. Pero, ¿puedo decirle a git que use esta bandera cuando se fusione también?

¿Podría la respuesta estar relacionada con las estrategias / opciones de fusión, tales como:

 git merge -s recursive -X patience [branch] 

Hasta donde yo sé, no hay forma de boost las líneas de context durante una combinación. Se supone que el algorithm de paciencia y diferencia maneja mejor su caso de uso. La página man de git-merge (1) lo describe así:

Con esta opción, merge-recursive gasta un poco más de time para evitar confusiones que a veces ocurren debido a líneas de coincidencia sin importancia (por ejemplo, llaves de distintas funciones). Úselo cuando las twigs que van a fusionarse se hayan desviado violentamente.

Dado que esto se ve exactamente como la situación que está describiendo, la paciencia parece diseñada a medida para ayudarlo. Puedes probarlo en una sucursal desechable como esta:

 git checkout -b temp_merge_branch master git merge --strategy-option=patience other_branch 

Si la fusión funciona limpiamente, puede avanzar rápidamente su twig principal con los resultados. Si no, puedes descartar la twig temporal y search otras alternativas.

Use estas configuraciones para get diferencias de paciencia con cinco líneas de context en todas partes:

 git config --global diff.algorithm patience git config --global diff.context 5 

Si usa --color-words menudo, esto también es útil:

 git config --global diff.wordRegex '[A-z0-9_]+|[^[:space:]]' 

La primera configuration requiere Git 1.8.2 .