J'ai réussi à faire démarrer git avec Beyond Compare 3 en tant qu'outil de différenciation; toutefois, lorsque je fais un diff, le fichier que je compare par rapport à celui-ci n'est pas chargé. Seule la dernière version du fichier est chargée et rien d'autre, il n'y a donc rien dans le volet de droite de Beyond Compare.
J'utilise git 1.6.3.1 avec Cygwin avec Beyond Compare 3. J'ai mis en place une incomparable comparaison, comme ils le suggèrent dans la partie support de leur site Web, avec un script du genre:
#!/bin/sh
# diff is called by git with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode
"path_to_bc3_executable" "$2" "$5" | cat
Quelqu'un d'autre a-t-il rencontré ce problème et connaît-il une solution?
Modifier:
J'ai suivi les suggestions de VonC mais j'ai toujours le même problème qu'auparavant. Je suis un peu nouveau sur Git, alors je n’utilise peut-être pas correctement le diff.
Par exemple, j'essaie de voir le diff sur un fichier avec une commande comme celle-ci:
git diff main.css
Beyond Compare s’ouvrira alors et n’affichera que mon fichier principal.css actuel dans le volet de gauche, il n’y a rien dans le volet de droite. Je voudrais voir mon main.css actuel dans le volet de gauche par rapport au HEAD, essentiellement ce que j’ai commis.
Mon git-diff-wrapper.sh ressemble à ceci:
#!/bin/sh
# diff is called by git with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode
"c:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat
Ma config git ressemble à ceci pour Diff:
[diff]
external = c:/cygwin/bin/git-diff-wrapper.sh
Je n'utilise pas de fichiers wrapper supplémentaires .sh. Mon environnement est Windows XP, git 1.7.1 sur cygwin et Beyond Compare 3. Voici mon fichier .git/config .
[diff]
tool = bc3
[difftool]
Prompt = false
[difftool "bc3"]
#use cygpath to transform cygwin path $LOCAL (something like /tmp/U5VvP1_abc) to windows path, because bc3 is a windows software
cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$(cygpath -w $LOCAL)" "$REMOTE"
[merge]
tool = bc3
[mergetool]
Prompt = false
[mergetool "bc3"]
#trustExitCode = true
cmd = \"c:/program files/beyond compare 3/bcomp.exe\" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"
Ensuite, j'utilise$ git difftoolpour comparer et$ git mergetoolpour fusionner.
À propos de trustExitCode : Pour une commande de fusion personnalisée, indiquez si le code de sortie de la commande de fusion peut être utilisé pour déterminer si la fusion a réussi. Si ce n'est pas défini sur true, l'horodatage du fichier cible de la fusion est vérifié et la fusion est supposée avoir abouti si le fichier a été mis à jour. Sinon, l'utilisateur est invité à indiquer le succès de la fusion.
Merci à @dahlbyk , auteur de Posh-Git , pour avoir posté sa config en tant que Gist . Cela m'a aidé à résoudre mon problème de configuration.
[diff]
tool = bc3
[difftool]
Prompt = false
[difftool "bc3"]
cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
tool = bc3
[mergetool]
Prompt = false
keepBackup = false
[mergetool "bc3"]
cmd = \"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
trustExitCode = true
[alias]
dt = difftool
mt = mergetool
Exécutez ces commandes pour Beyond Compare 2:
git config --global diff.tool bc2
git config --global difftool.bc2.cmd "\"c:/program files (x86)/beyond compare 2/bc2.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.Prompt false
Exécutez ces commandes pour Beyond Compare 3:
git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.Prompt false
Puis utilisez git difftool
Documentation officielle a travaillé pour moi
Voici mon fichier de configuration. Il a fallu un peu de lutte mais maintenant cela fonctionne . J'utilise un serveur Windows, msysgit et au-delà de 3 (apparemment une version x86). Vous remarquerez que je n'ai pas besoin de spécifier d'arguments, et j'utilise "chemin" au lieu de "cmd".
[user]
name = PeteW
email = [email protected]
[diff]
tool = bc3
[difftool]
Prompt = false
[difftool "bc3"]
path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe
[merge]
tool = bc3
[mergetool]
Prompt = false
keepBackup = false
[mergetool "bc3"]
path = /c/Program Files (x86)/Beyond Compare 3/BComp.exe
trustExitCode = true
[alias]
dt = difftool
mt = mergetool
il semble que BC3 ne prenne en charge que la fusion à 3 voies pour PRO Edition . http://www.scootersoftware.com/moreinfo.php?zz=kb_editions
La page de support Beyond Compare est un peu brève.
Vérifiez mon diff.external answer pour plus (en ce qui concerne la syntaxe exacte)
Extrait:
$ git config --global diff.external <path_to_wrapper_script>
à l'invite de commande, en remplaçant par le chemin "
git-diff-wrapper.sh
", votre~/.gitconfig
contient donc
-->8-(snip)--
[diff]
external = <path_to_wrapper_script>
--8<-(snap)--
Veillez à utiliser la syntaxe correcte pour spécifier les chemins d'accès au script wrapper et à l'outil diff, c'est-à-dire utiliser des barres obliques au lieu de barres inversées. Dans mon cas, j'ai
[diff]
external = c:/Documents and Settings/sschuber/git-diff-wrapper.sh
en
.gitconfig
et
"d:/Program Files/Beyond Compare 3/BCompare.exe" "$2" "$5" | cat
dans le script wrapper.
Remarque: vous pouvez également utiliser git difftool
.
Veuillez noter que vous faites un mauvais chemin de 2 $ . Parce que vous êtes sous Cygwin mais pas en BC3, vous devez donc spécifier un chemin complet. comme "d:/cygwin $ 2"
S'il vous plaît se référer mon git-diff-wrapper.sh ici:
$ cat ~/git-diff-wrapper.sh
#!/bin/sh
echo $2
echo $5
/cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "d:/programs/cygwin$2" "$5"
Bonne chance.
Mise à jour pour BC4 64 bits: Ceci fonctionne pour Git pour Windows v.2.16.2 et Beyond Compare 4 - v.4.2.4 (Édition 64 bits)
J'ai modifié manuellement le fichier .gitconfig situé dans la racine de mon utilisateur "C:\Users\MyUserName"
[diff]
tool = bc
[difftool "bc"]
path = 'C:/Program Files/Beyond Compare 4/BComp.exe'
[difftool "bc"]
cmd = \"C:/Program Files/Beyond Compare 4/BComp.exe\" \"$LOCAL\" \"$REMOTE\"
[difftool]
Prompt = false
[merge]
tool = bc
[mergetool "bc"]
path = 'C:/Program Files/Beyond Compare 4/BComp.exe'
[mergetool "bc"]
cmd = \"C:/Program Files/Beyond Compare 4/BComp.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"
Si vous utilisez Windows 7 (version professionnelle) et Git pour Windows (version 2.15 ou ultérieure), vous pouvez simplement exécuter la commande ci-dessous pour connaître les différents outils de prise en charge pris en charge par votre Git pour Windows.
git difftool --tool-help
Vous verrez une sortie semblable à celle-ci
git difftool --tool = 'peut être défini sur l'un des éléments suivants:
vimdiff vimdiff2 vimdiff3
cela signifie que votre git ne supporte pas (ne trouve pas) au-delà de la comparaison en tant que difftool pour le moment.
Pour que Git puisse trouver plus loin que comparé comme difftool valide, vous devez avoir le répertoire d'installation Beyond Compare dans votre variable d'environnement système chemin. Vous pouvez vérifier cela en exécutant bcompare depuis Shell (cmd, git bash ou powershell. J'utilise Git Bash). Si Beyond Compare ne démarre pas, ajoutez son répertoire d'installation (dans mon cas, C:\Program Files\Beyond Compare 4) à la variable de chemin d'accès de votre système. Après cela, redémarrez votre Shell. Git montrera Beyond Compare comme option difftool possible. Vous pouvez utiliser n’importe laquelle des commandes ci-dessous pour lancer une comparaison sans comparaison sous difftool (par exemple, pour comparer un fichier local avec une autre branche)
git difftool -t bc branchnametocomparewith -- path-to-file
or
git difftool --tool=bc branchnametocomparewith -- path-to-file
Vous pouvez configurer au-delà de comparer comme difftool par défaut en utilisant les commandes ci-dessous
git config --global diff.tool bc
p.s. gardez à l'esprit que bc dans la commande ci-dessus peut être bc3 ou bc en fonction de ce que Git a pu trouver à partir de votre variable système de chemin.
Exécutez ces commandes pour Beyond Compare 3 (si le chemin BCompare.exe est différent sur votre système, remplacez-le en fonction de votre choix):
git config --global diff.tool bc3
git config --global difftool.bc3.cmd "\"c:/program files (x86)/beyond compare 3/BCompare.exe\" \"$LOCAL\" \"$REMOTE\""
git config --global difftool.Prompt false
Puis utilisez git difftool
La différence est dans le fichier exe appelé: configurez-le pour appeler bcomp.exe et tout fonctionnera bien. Configurez votre environnement pour appeler bcompare.exe et vous vous retrouverez avec le côté de la comparaison pris de votre système de révision vide.
http://rubenlaguna.com/wp/2010/08/05/visual-difftool-cygwin-git/ a une solution que j'ai adoptée pour fonctionner pour BeyondCompare: http: // Gist. github.com/564573
Windows 10, Git v2.13.2
Mon .gitconfig. N'oubliez pas d'ajouter un caractère d'échappement pour '\' et '"'.
[diff]
tool = bc4
[difftool]
Prompt = false
[difftool "bc4"]
cmd = \"C:\\Program Files\\Beyond Compare 4\\BCompare.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
tool = bc4
[mergetool "bc4"]
path = C:\\Program Files\\Beyond Compare 4\\BCompare.exe
Vous pouvez référencer une configuration sans comparaison avec difftool pour utiliser les commandes git afin de le configurer.
Pour MAC, après de nombreuses recherches, cela a fonctionné pour moi ...! 1. Installez le comparer au-delà et ce sera installé dans l'emplacement ci-dessous
/ Applications/Beyond\Compare.app/Contents/MacOS/bcomp
Veuillez suivre ces étapes pour transformer bc en outil diff/merge dans git http://www.scootersoftware.com/support.php?zz=kb_mac
Pour git version 2.15.1.windows.2 avec BC2.exe.
La configuration ci-dessous fonctionne enfin sur ma machine.
[difftool "bc2"]
cmd = \"c:/program files/beyond compare 2/bc2.exe\" ${LOCAL} ${REMOTE}
Pour une raison quelconque, pour moi, le fichier tmp créé par git diff était supprimé avant son ouverture au-delà de la comparaison. Je devais d'abord le copier à un autre endroit.
cp -r $2 "/cygdrive/c/temp$2"
cygstart /cygdrive/c/Program\ Files\ \(x86\)/Beyond\ Compare\ 3/BCompare.exe "C:/temp$2" "$5"