J'ai travaillé pour que tortoisemerge fonctionne comme l'option difftool dans Git avec mon fichier .gitconfig montrant actuellement:
[diff]
tool = tortoise
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:$LOCAL -base:$REMOTE
[difftool]
Prompt = false
Selon tortoise merge docs la commande 'mine' indique quel fichier sera affiché sur la droite, dans un double sens.
Ma question est, à quoi les variables LOCAL et REMOTE fournies par GIT pointent-elles réellement? Le documentation est un peu vague indiquant que
LOCAL est défini sur le nom du fichier temporaire contenant le contenu de la pré-image diff et REMOTE est défini sur le nom du fichier temporaire contenant le contenu de la post-image diff.
Le problème se pose lorsque je modifie un fichier, puis que je saisis 'git difftool' tortoisemerge est démarré avec le fichier de répertoire de travail à GAUCHE et non à droite comme je le suppose. Je sais que je peux simplement changer les commandes "mine" et "local" mais j'essayais de comprendre vers quoi les points local/distant et la meilleure façon de résoudre ce problème
Je pense que cela signifie que $LOCAL
est toujours le a/whatever
dans la sortie diff, tandis que $REMOTE
est le b/whatever
. En d'autres termes, si vous le faites:
git difftool master experiment -- Makefile
$LOCAL
sera un fichier temporaire indiquant l'état de Makefile
dans la branche master
, tandis que $REMOTE
sera un fichier temporaire montrant son état dans la branche experiment
.
Si vous venez de courir:
git difftool
... qui vous montre la différence entre l'index et votre arborescence de travail, donc pour chaque fichier avec des différences, $LOCAL
sera un fichier temporaire identique à la version du fichier dans l'index, tandis que $REMOTE
sera la version du fichier dans votre arborescence de travail.
il y a 4 composants à cela (notez qu'avant cette étape, vous auriez déjà fait un enregistrement local.)
J'utilise TortoiseSvn pour la fusion et la diff et fonctionne comme prévu. En diff, il montre ma copie de travail à droite. Mon .gitconfig avec TortoiseSvn est comme suit
[diff]
tool = tortoise
[merge]
tool = tortoise
[mergetool "tortoise"]
cmd = TortoiseMerge.exe -base:\"$BASE\" -mine:\"$LOCAL\" -theirs:\"$REMOTE\" -merged:\"$MERGED\"
[difftool "tortoise"]
cmd = tortoisemerge.exe -mine:\"$REMOTE\" -base:\"$LOCAL\"