Question

J'ai la configuration vim comme mon outil de diff externe:

[diff]
        external = git_diff_wrapper

#!/bin/sh

vimdiff "$2" "$5"

Dire que j'ai 300 fichiers qui ont été modifiés; via bash, je tape "diff git". Il lance 300 vimdiffs séquentielle, comment puis-je désactiver?

Était-ce utile?

La solution

En cas d'arrêt du processus ne suffit pas, en tuant la coquille elle-même (dans laquelle vous avez lancé git diff) pourrait être plus efficace.

http://trick.vanstaveren.us/wp/wp-uploads/2009/06/close-this -window.png


Voir aussi Git Diff avec Vimdiff

Vimdiff

  

Ne pas être prêt à toute vitesse en utilisant vimdiff (je suis juste nouveau pour elle), je mets ce qui suit dans « gitvimdiff ».
  Le résultat est que je peux utiliser vimdiff à regarder git-diff en exécutant « gitvimdiff », mais une invocation normale de « se comporte de git diff » que je suis habitué.

#!/bin/sh

if [ -n "${GIT_EXTERNAL_DIFF}" ]; then
[ "${GIT_EXTERNAL_DIFF}" = "${0}" ] ||
{ echo “GIT_EXTERNAL_DIFF set to unexpected value” 1>&2; exit 1; }
exec vimdiff “$2″ “$5″
else
GIT_EXTERNAL_DIFF=”${0}” exec git –no-pager diff “$@”
fi

Mais si vous voulez toujours le git diff modifié, une aide pourrait de git status avant de le lancer;)

Et vous pouvez configurer une fonction pour obtenir l'ancien comportement de git diff si nécessaire:

  

J'ai toujours accès au git par défaut le comportement de diff avec le drapeau de --no-ext-diff. Voici une fonction que je mets dans mes fichiers de configuration de bash:

function git_diff() {
  git diff --no-ext-diff -w "$@" | vim -R -
}
  
      
  • --no-ext-diff: pour empêcher l'utilisation vimdiff
  •   
  • -w: ignorer les espaces
  •   
  • -R: pour commencer vim en mode lecture seule
  •   
  • -: faire acte vim comme un téléavertisseur
  •   

Autres conseils

Utilisation: cquit à vim de sortie avec un code d'erreur. Git détecte l'erreur et arrêter l'ouverture de nouveaux vimdiffs. Vous aurez probablement envie de créer un mappage pour dans votre .vimrc:

if &diff
  map Q :cquit<CR>
endif

Alors vient de frapper Q au début abort d'un git run diff.

Pour que cela fonctionne, vous devez modifier votre gitconfig:

git config --global difftool.trustExitCode true
git config --global mergetool.trustExitCode true

Il suffit de tuer le processus parent. Ouvrez un terminal, utilisez pstree -p pour trouver l'ID de processus (PID) du processus de git, kill -9 il. Sur mon système, il ressemble à ceci:

$ pstree -p
...
        ├─gnome-terminal(20473)─┬─bash(10302)───git(10331)───pager(10332)
...
$ kill -9 10331

Pas exactement élégant, mais cela fonctionne. Sur votre système, pager sera probablement quelque chose de différent, mais il aura git comme processus parent.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top