atlassian sourcetree - ¿Cómo usar Meld como herramienta de combinación con SourceTree en Windows?
atlassian-sourcetree (5)
Tengo lo siguiente en mi archivo .gitconfig
:
[user]
name = myname
email = [email protected]
[core]
autocrlf = true
excludesfile = C://Users//myname//Documents//gitignore_global.txt
[diff]
tool = meld
[difftool "meld"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
prompt = false
[merge]
tool = meld
[mergetool "meld"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe"
[difftool "sourcetree"]
cmd = "C:/Program Files (x86)/Meld/meld/meld.exe $PWD/$LOCAL $PWD/$BASE $PWD/$REMOTE"
[mergetool "sourcetree"]
cmd = ''C:/Program Files (x86)/Meld/meld/meld.exe'' /"$LOCAL/" /"$REMOTE/" /"$MERGED/"
trustExitCode = true
Y en sourcetree, tengo las siguientes configuraciones:
Sin embargo, cuando hice clic derecho en un archivo en sourcetree para hacer diff externo, pude abrir meld pero el contenido del archivo no se mostró en absoluto.
¿Qué he hecho mal en la configuración?
Intente agregar la ubicación de meld.exe a su RUTA (por ejemplo, C: / Archivos de programa (x86) / Meld), luego en Diff Command solo ingrese meld en lugar de la ruta completa. Consulte aquí: https://gist.github.com/chinhodado/6fc37def3e12ea09f785
La configuración real que se debe usar aquí para tener una combinación real de 3 vías, con las pestañas de solo lectura THEIRS y MINE es la siguiente:
$LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
Tenga en cuenta el =
después de --output
.
Finalmente he acertado con este comando al profundizar en los comentarios sobre la segunda respuesta a esta pregunta: Git se fusiona con Meld .
Si no desea modificar la variable de entorno PATH, puede usar los nombres cortos compatibles con DOS:
C:/Progra~1 = C:/Program Files
C:/Progra~2 = C:/Program Files (x86)
Eso evita los espacios que causan problemas en la ruta y juega bien con SourceTree. Es pirata pero funciona. Entonces puedes usar algo como esto como el camino a Meld:
C:/Progra~1/Meld/meld.exe
Es posible que no se garantice que Progra ~ 1 se asigne al directorio de 64 bits, por lo que es posible que tenga que experimentar con cuál se asigna.
Siento que las respuestas existentes perdieron un poco el punto. Aquí está mi propia comida para perros:
Detalle de argumentos:
Diff: $LOCAL $REMOTE
Merge: $LOCAL $BASE $REMOTE --auto-merge --output=$MERGED
Para External Diff
, debe eliminar $ BASE de su lista de argumentos
Para la combinación de 3 vías, debe hacer clic en la opción External Merge Tool
, que solo estará disponible si hay algún conflicto sin resolver.
Actualización: si no está restringido a SourceTree + Meld , creo que la suite Git Extensions + KDiff3 podría ser una buena alternativa de código abierto.