2010-01-08 4 views
4

Lors de l'utilisation d'un pilote personnalisé pour la fusion dans Git, quel est le chemin complet des attributs/arguments Git que vous transmettez au pilote?Pilote Git Merge - Attributs de fichier

Ex:

driver = filfre %O %A %B 

Quel est le chemin complet du fichier des trois fichiers, %O, %A et %B?

-Tanner

Répondre

2

Vous pouvez suivre l'exemple j'ai posté sur How do I tell git to always select my local version for conflicted merges on a specific file?.

Ce scénario implique un pilote de fusion, que vous pouvez modifier pour afficher ces trois variables.

keepmine.sh 

echo 
echo origin $1 
echo origin content: 
cat $1 
echo 
echo local $2 
echo local content: 
cat $2 
echo 
echo remote $3 
echo remote content: 
cat $3 
exit 0 

Voici ce qu'il m'a rendu:

C:\Prog\Git\tests\CopyMerge>git merge hisBranch 

origin .merge_file_a08152 
origin content: 
    b 

local .merge_file_b08152 
local content: 
    b 
    myLineForB 

remote .merge_file_c08152 
remote content: 
    b 
    hisLineForB 

Donc, dans ce cas, il semble être générer trois fichiers temporaires, locaux noms merge_file_xxx.


Comme mentionné par BlackEye dans le commentaire et la réponse de blackeye "Git Merge Driver - How to find out full path of merged file?", commit ef45bb1 introduit (GIT 2.5, Juillet 2015) le chemin d'origine aux conducteurs externes avec %P.

+0

Mais il devrait y avoir un moyen de récupérer le chemin du fichier d'origine, je pense. Et aujourd'hui, 5 ans plus tard? Toute suggestion? – BlackEye

+0

Le chemin du fichier d'origine peut maintenant (depuis 2.5) être passé au pilote de fusion en utilisant le paramètre% P. – BlackEye

+0

@BlackEye Bonne trouvaille! J'ai inclus votre commentaire dans la réponse pour plus de visibilité. – VonC