get routes completas de files en Git Merge

Estoy trabajando en una herramienta para analizar el resultado de fusionar muchas twigs temáticas y producir un informe de conflicto detallado. Me he encontrado con un pequeño problema porque a veces Git produce un nombre de file truncado en la salida del command de fusión, como

Merge made by recursive. .../somepath/anotherpath/toolong/default.css | 2 +- 

Cuando en otros casos da la ruta completa

 Auto-merging thefullpath/to/myfile/default.jsp 

Me gustaría tener siempre la ruta completa disponible para hacer coincidir los files entre las fusiones.

Estoy un poco confundido por tu objective final, pero creo que puedo dar una respuesta de todos modos.

Si desea get un buen informe de los cambios cuando una fusión se encuentra con conflictos, es decir, mientras todo no está comprometido, debe usar el git status --porcelain . Ofrece una buena list legible por máquina de todos los files y sus estados (incluidos los estados de conflicto de combinación) y está bien documentada en la página de manual . Dependiendo de su caso de uso, incluso podría usar git merge --no-commit para asegurarse de tener la oportunidad de inspeccionar el resultado de la fusión antes de continuar (confirmar). También puede usar git diff HEAD --numstat para get un informe legible por máquina de los recuentos de línea agregados / eliminados por file.

Si desea examinar las fusiones después del hecho, es un muy buen caso de uso para git diff-tree :

 git diff-tree -c --numstat <commit> 

El -c le dice a diff que confunde los commits contra ambos padres, y el --numstat da un buen resultado legible por máquina como antes.

Finalmente, si desea generar informes de conflictos extremadamente detallados, puede pasar -p lugar de --numstat , lo que le proporciona un resultado de parche completo. Este es el tipo de parche que verá en gitk , donde hay dos caracteres al comienzo de cada línea, que indican si la línea se agregó / eliminó en relación con cada padre. Los cambios que provienen de un solo padre tienen solo un símbolo (por ejemplo, '+ ' , ' -' , comillas añadidas para hacer que los espacios sean visibles), mientras que las líneas se cambian manualmente porque parte de la resolución del conflicto tendrá dos ( -- , ++ ). Podría analizarlo usted mismo si realmente tuviera que hacerlo. (Desafortunadamente, no creo que haya nada como --numstat en los esteroides para las --numstat de fusión.)