Comment puis-je configurer DiffMerge avec msysgit / gitk?
J'ai commencé à utiliser Git, et il est possible que j'ai raté quelque chose d'évident, mais va ici:
- Je suis en utilisant msysgit 1.6.2.2 sur Windows XP
- Lors de l'installation, j'ai choisi l'option 1 pour "l'Utilisation de Git Bash seulement"
Je suis en train de mettre un script que je peux utiliser pour remplacer le dépôt git diff avec DiffMerge. Basé sur ce fil sur DONC, j'ai créé le fichier de commandes suivant:
@echo off
REM ---- Switch forward slashes to back slashes ----
set oldW=%2
set oldW=%oldW:/=\%
set newW=%5
set newW=%newW:/=\%
REM ---- Launch DiffMerge ----
"C:/Programs/SourceGear/DiffMerge/DiffMerge.exe" /title1="Old Version" %oldW% /title2="New Version" %newW%
J'ai placé le fichier bat dans %GIT_INSTALL%/cmd et édité mon .gitconfig fichier comme suit:
[diff]
external = C:/Programs/git/cmd/git-diff-wrapper.bat
Si je me lance Git Bash et exécuter
git diff tête TÊTE~ -- myfile
Je reçois un message File (\dev\null) not found
- ce qui donne, je suis sur Windows n'est pas surprenant.
Appuyant sur, j'ai lancé gitk et en vertu de l'Edit>Préférences, j'ai choisi le même script. Essayer externe "diff" option pour un fichier particulier donne le message d'erreur cryptique Unknown Option "
Clairement, je n'ai aucune idée de ce que je suis en train de faire plus de sorte que toute aide serait grandement appréciée.
- Tout juste de terminer ma réponse avec quelques "DiffMerge" des éléments spécifiques, comme l'avait demandé.
Vous devez vous connecter pour publier un commentaire.
J'ai vécu une expérience similaire avec réglage de Notepad++ comme mon éditeur externe avec msysgit1.6.2.2.
La clé a été de réaliser l'emballage n'était pas un DOS script, mais un /bin/sh script.
Donc, essayez de mettre dans votre ".chauve-souris" (même si elle n'est pas exactement une chauve-souris de script, l'extension n'est pas important ici):
Ne vous inquiétez pas à propos de faire tous les "
\
' go '/
': il est fait par le Git scripts appelant externe outil de comparaison.Je n'ai pas tester avec DiffMerge, mais avec WinMerge, il fonctionne très bien, à la fois dans une session DOS ou un Git Shell.
(avec le "
-e
'option, je viens de ot de type sur"ESC
" pour fermer et quitter l'outil diff: qui fonctionne très bien!)average_geek ajoute dans les commentaires:
1/Il ya effectivement un moyen de voir quels sont les paramètres passé!
Ajouter la ligne suivante dans le
C:\Program Files\Git\libexec\git-core\git-sh-setup
fichier:Vous verrez ce que l'éditeur est appelé, avec ce paramètre.
Maintenant, concernant les "Imprévus" paramètres de la partie:
J'ai fait le même genre d'erreur quand j'ai appelé WinMergeU.exe avec "
/e /ub
" au lieu de "-e -ub
", donc, la première question est la suivante:Êtes-vous sûr que le "
/title1
" bit ne peut pas être utilisé comme "-title1
" ou "-t1
" ou "--title1
" ou "--t1
" ? Qu'est ce que l'on peut voir à partir de la chapitre 9 "les Lignes de Commande Arguments" de la documentation au format pdf de DiffMerge.Si non, je soupçonne que certains guillemets sont dans l'ordre pour délimiter correctement les différents paramètres. Quelque chose comme:
Mais mon argent serait plutôt sur le "
-title1
" ou "-t1
" formulaire:devrait fonctionner parfaitement.
/bin/sh
en-tête et essayé de lancer la commande git diff de nouveau. Cette fois, l'erreur est: Inattendu paramètre 'C:/Docume~/avggeek/LOCALS~1/Temp/.diff_b08444 Is there a way to see what are the parameters getting passed when I call
git diff`?J'ai regardé sur internet pour la réponse à cette question. J'ai essayé toutes les solutions ci-dessus et ailleurs. J'ai pu obtenir la fusion de la partie de travail et non pas la diff partie ou vice versa. Donc, ce que je n'ai finalement été à pirater ma propre solution simple de toutes les infos que j'ai trouvé sur internet qui fonctionne pour moi.
Il ne nécessite pas seulement les scripts que vous modifiez votre
.gitconfig
qui se trouve normalement dans le répertoire suivantC:\Documents and Settings\[username]
Vous aurez besoin d'avoir DiffMerge programme déjà installé.Voici un extrait de mon
.gitconfig
fichier. Vous aurez seulement besoin de modifier le chemin d'accès de l'endroit où votre version de deDiffMerge
est. Note que j'ai utilisé l'ancien format DOS 8.3 dans le chemin d'accèsVous pouvez également le configurer à l'aide des commandes
git config --replace --global [options]
si vous le souhaitez.Cette solution simple fonctionne parfaitement pour moi, trop. Pour les versions plus récentes de DiffMerge (3.3.1), le chemin de commande doit être changé:
... /merge /replace=...
à... --merge --replace=...
; SourceGear de docs semblent être mauvais.Cela fonctionne pour moi, comme suit:
Dans
~/.gitconfig
:Dans
C:\Program Files\Git\cmd\git-diffmerge-merge.sh
:Partie du mérite revient à http://therightstuff.de/2009/01/28/Setting-Up-SourceGear-DiffMerge-With-Git.aspx 😉
VonC de commutation à -t1 et t2 corrigé les erreurs. Diffmerge travaille maintenant pour git bash 🙂
Après un peu de piquer le gitk patch qui a ajouté Externe Diff de soutien, j'ai réalisé qu'il appelle Externe Diff programme directement avec les deux fichiers en arguments. J'ai donc modifié gitk>Edit>Préférences et de les mettre directement la commande suivante dans l'Externe Diff option de l'Outil:
Maintenant, j'ai DiffMerge de travail pour gitk trop 🙂