Edit: j'ai emballé cette histoire dans un billet de blog ici, cela semblait être une bonne excuse pour un premier blog :)
Voici ce que j'ai installé sur:
for name in $(git diff --name-only $1); do git difftool $1 $name & done
Cette fonction retourne la liste des fichiers modifiés et les appels externes outil de comparaison sur chaque fichier séparé.
La clé, c'est l' & commande param qui raconte l'externe diff commande à exécuter en tâche de fond, permettant ainsi successives de diff pour exécuter immédiatement. Dans le cas de BeyondCompare ainsi, tous les fichiers à ouvrir dans des onglets au sein de la même BC fenêtre, qui est ce que je veux.
Pour le rendre facile à utiliser, j'ai enregistré le script dans un fichier appelé diffall.sh et copiés que /mon-git-install-dir/cmd/ dossier de sorte qu'il est dans mon chemin, puis il a créé un alias git pour elle appelle diffall :
git config --global alias.diffall '!sh diffall.sh'
Maintenant, je peux l'exécuter en tapant (accepte facultatif params, par exemple, de la TÊTE ou --mise en scène):
git diffall
et revenir à la normale externe diff etc:
git difftool
Edit: mise à jour (détails sur le blog) pour gérer les chemins d'accès avec des espaces, d'autres pas d'invite de paramètre, et plusieurs d'entrée params.
git diff --name-only "$@" | while read filename; do
git difftool "$@" --no-prompt "$filename" &
done