Lorsque je fais git diff
, il essaie de lancer mon outil de comparaison avec des fichiers qui n'existent pas. Je suppose qu'il obtient la dernière version du fichier .gitignore
modifié et le copie dans un fichier temporaire. Donc, je vois le lancement:git diff essaie de comparer les fichiers qui n'existent pas
"C:\Program Files\Git\usr\bin\diff.exe" .gitignore C:/temp/D4Sgyb_.gitignore 55f1.... 100644 .gitignore 000.... 100644
Mais l'outil diff se plaint, à juste titre, que C:/temp/D4Sgyb_.gitignore
n'existe pas. Cela n'est-il pas créé ou supprimé trop tôt?
Normalement 'git diff' fait son propre diff interne, mais si vous lui dites * d'utiliser un autre programme, il invoque ce diff" externe "avec sept arguments: * chemin d'accès ancien fichier ancien-hex ancien mode nouveau -file nouveau-hex nouveau-mode *. Cela semble être le lancement d'un diff externe. Voir https://www.kernel.org/pub/software/scm/git/docs/git.html#_git_diffs – torek
Mais il semble que ce soit en train de créer le fichier temporaire qu'il transmet à l'outil externe. – Marc
Intéressant. Les docs mentionnent (et le code est écrit pour le faire) que Git va supprimer le fichier temporaire dès que le programme externe se termine, c'est-à-dire qu'il quitte et que le processus est collecté par Git. Je ne "fais" pas Windows mais peut-être que quelque chose fait l'équivalent d'un "double fork" Unix/Linux? Ou c'est juste un bug dans Windows Git, à défaut de remarquer qu'il n'a jamais été capable de créer le fichier temporaire. :-) – torek