Domanda

Ho messa a punto vim come il mio strumento diff esterno:

[diff]
        external = git_diff_wrapper

#!/bin/sh

vimdiff "$2" "$5"

dire che ho 300 file che sono stati modificati; via bash, digito "diff git". Lancia 300 vimdiffs in sequenza, come faccio abortire?

È stato utile?

Soluzione

In caso di interruzione del processo non è sufficiente, uccidendo la shell stessa (in cui è stata lanciata la git diff) potrebbe essere più efficace.

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


Vedi anche Git Diff con Vimdiff

vimdiff

  

Non essendo pronto ad andare tutta velocità nel usando vimdiff (io sono solo nuovi ad esso), ho messo il seguente in ‘gitvimdiff’.
  Il risultato è che posso usare vimdiff a guardare git-diff eseguendo ‘gitvimdiff’, ma un normale invocazione si comporta ‘git diff’ come io sono abituato.

#!/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

Ma se si vuole ancora il git diff modificato, un aiuto git status potenza prima di lanciarlo;)

E si può impostare una funzione per ottenere il vecchio comportamento git diff se necessario:

  

ho ancora accesso al comportamento di default diff git con la bandiera --no-ext-diff. Ecco una funzione che ho messo nel mio file di configurazione di bash:

function git_diff() {
  git diff --no-ext-diff -w "$@" | vim -R -
}
  
      
  • --no-ext-diff: per evitare usando vimdiff
  •   
  • -w: ignorare gli spazi
  •   
  • -R: per avviare vim in modalità di sola lettura
  •   
  • -: Affinché il vim come un cercapersone
  •   

Altri suggerimenti

Usa: cquit per uscire vim con un codice di errore. Git rileverà l'errore e fermare l'apertura di nuovi vimdiffs. Probabilmente si vorrà creare una mappatura per esso nel vostro .vimrc:

if &diff
  map Q :cquit<CR>
endif

Poi basta premere Q per interrompere presto da una corsa git diff.

Al fine di questo lavoro è necessario modificare il vostro gitconfig:

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

Basta uccidere il processo padre. Aprire un terminale, l'uso pstree -p per trovare l'ID del processo (PID) del processo git, quindi kill -9 esso. Sul mio sistema, sembra qualcosa di simile:

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

Non esattamente elegante, ma funziona. Sul sistema, pager sarà probabilmente qualcosa di diverso, ma avrà git come un processo padre.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top