2013-10-01 1 views
3

Existe-t-il un moyen de configurer la fusion git de telle sorte que la résolution des conflits passe toujours par un outil de fusion externe? J'écris la configuration pour semanticmerge et il y a des cas comme ceux-ci qui sont mal gérés par git mais qui peuvent être résolus correctement par semanticmerge: * deux développeurs ont ajouté la même méthode sur deux emplacements différents du même fichier.Existe-t-il un moyen de forcer Git Merge à toujours utiliser un outil de fusion externe?

Le problème est que git merge dit que le conflit est automatique, donc git mergetool ne peut pas être invoqué.

Merci.

Répondre

-3

Veuillez vérifier le livre git-scm (http://git-scm.com/book/en/Customizing-Git-Git-Configuration#External-Merge-and-Diff-Tools). Ceci a une explication détaillée des outils de fusion externe et de diff.

+0

Vous devez inclure les informations de configuration du lien juste au cas où il disparaîtrait (ce qui rendrait la réponse inutile). – R0MANARMY

+0

Oui, mais cela n'inclut pas ce que je demande. C'est pourquoi je demande. AFAIK il ne dit pas comment forcer mergetool à courir à chaque fusion. – pablo

0

Voir la documentation de gitattributes. Deep down est un attribut appelé "merge" qui définit la méthode de fusion pour les fichiers correspondants.

En tant que tel, par exemple, vous pourriez avoir un fichier .gitattributes à la racine du projet qui contient,

*.fancy merge filfre %O %A %B %L %P 

qui utilisera le programme filfre de fusion. Il appelle le programme avec

  • % O Nom de fichier temp version ancêtre
  • % de Un nom de fichier version actuelle
  • % B l'autre fichier temp version branches Nom
  • % L la taille du marqueur de conflit
  • chemin
  • % de P dans laquelle le résultat de la fusion sera stocké

le pilote de fusion devrait remplacer% A avec le résultat de la fusion dans le fusionner.

Il y a une section dans cette documentation, dirigée par « Définition d'un pilote de fusion personnalisé » qui suggère, pour la mise à l'échelle mondiale l'outil de fusion

[merge "filfre"] 
    name = feel-free merge driver 
    driver = filfre %O %A %B %L %P 
    recursive = binary 

placé dans la configuration de votre git, par exemple, .git/config ou $HOME/.gitconfig .

Questions connexes