windows - tag - git versioning
¿Por qué no puedo usar TortoiseMerge como mi herramienta de combinación git en Windows? (5)
Estoy intentando realizar mi primera fusión de Git (¡emocionante!), Pero no puedo obtener Git Gui (0.13.GITGUI desde Git 1.7.4.msysgit.0) para reconocer TortoiseMerge (1.6.11.20210 x64) en Windows 7. En función de una respuesta a una pregunta similar , realicé los siguientes cambios de configuración:
$ git config --global merge.tool tortoisemerge
$ git config --global mergetool.tortoisemerge.cmd ''TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"''
$ git config --global --list
...snip...
merge.tool=tortoisemerge
mergetool.tortoisemerge.cmd=TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"
$
Desafortunadamente, cuando inicio Git Gui e intento ejecutar "Run Merge Tool", recibo el error Unsupported merge tool ''tortoisemerge''
.
¿Alguien puede decirme qué he hecho mal? Aquí están las secciones relevantes de mi ~/.gitconfig
:
[merge]
tool = tortoisemerge
[mergetool "tortoisemerge"]
cmd = TortoiseMerge.exe -base:/"$BASE/" -mine:/"$LOCAL/" -theirs:/"$REMOTE/" -merged:/"$MERGED/"
Actualizar
TortoiseMerge funciona bien con la configuración anterior cuando se ejecuta git mergetool
desde la línea de comandos. Parece que solo Git Gui tiene problemas con eso. : - /
Este problema parece resuelto en el último git (tengo git version 1.9.4.msysgit.1
).
C:/git/build>git mergetool
This message is displayed because ''merge.tool'' is not configured.
See ''git mergetool --tool-help'' or ''git help config'' for more details.
''git mergetool'' will now attempt to use one of the following tools:
tortoisemerge emerge vimdiff
C:/git/build>git config merge.tool tortoisemerge
C:/git/build>git mergetool
No files need merging
Intente escribir TortoiseMerge.exe
desde la línea de comandos para asegurarse de que esté en la ruta. Si no, agréguelo a través de Mi PC> Propiedades> Avanzado> Variables de entorno> Variables del sistema: ruta.
Luego, desde el símbolo del sistema, configúrelo mediante los siguientes comandos
git config --replace --global diff.tool tortoisemerge
git config --replace --global difftool.diffmerge.cmd "TortoiseMerge.exe -base:/"$BASE/" -theirs:/"$REMOTE/" -mine:/"$LOCAL/" -merged:/"$MERGED/""
git config --replace --global difftool.prompt false
Para usarlo desde el símbolo del sistema, escriba git difftool
desde dentro del directorio de trabajo de git.
Muestra los archivos de uno en uno, por lo que es mejor instalar TortoiseGit, lo que facilita el manejo de los archivos, incluso si solo se trata de la parte diff.
Para el caso en el que estaba trabajando, el mergetool ya estaba configurado para tortoisemerge, pero no pudo encontrarlo.
Proporcionar una ubicación totalmente calificada trabajó en Windows:
git config --global mergetool.tortoisemerge.cmd "/"C://Program Files//TortoiseGit//bin//TortoiseGitMerge.exe/" -base:/"$BASE/" -mine:/"$LOCAL/" -theirs:/"$REMOTE/" -merged:/"$MERGED/""
Prueba esto:
[merge]
tool = tortoise
[mergetool "tortoise"]
cmd = "TortoiseMerge.exe" -base:"$BASE" -theirs:"$REMOTE" -mine:"$LOCAL" -merged:"$MERGED"
Fuente: http://programmersunlimited.wordpress.com/2010/07/01/getting-git-to-use-tortoisemerge/
Si tienes el último git, ejecuta esta línea de comando una vez:
git config merge.tool tortoisemerge
Importante: No agregue una extensión .exe
al comando.
Si eso falla, o si desea agregar una herramienta de fusión diferente que git no conoce, haga esto:
Abra uno de los siguientes en un editor:
-
C:/Program Files/Git/mingw64/share/git-gui/lib/mergetool.tcl
64 bits:C:/Program Files/Git/mingw64/share/git-gui/lib/mergetool.tcl
-
C:/Program Files (x86)/Git/share/git-gui/lib/mergetool.tcl
32 bits:C:/Program Files (x86)/Git/share/git-gui/lib/mergetool.tcl
Agregue algo como esto a mergetool.tcl:
tortoisemerge {
set cmdline [list TortoiseMerge.exe -base:"$BASE" -mine:"$LOCAL" -theirs:"$REMOTE" -merged:"$MERGED"]
}
Coloque la nueva entrada de tortoisemerge encima de este otro código:
default {
error_popup [mc "Unsupported merge tool ''%s''" $tool]
return
}
Ejemplo de bonificación:
Para usar la diffmerge de SourceGear, agréguela a mergetool.tcl:
diffmerge {
set cmdline [list "C:/Program Files (x86)/SourceGear/DiffMerge/DiffMerge.exe" --merge --result=$MERGED $LOCAL $BASE $REMOTE]
}