Cela signifie généralement qu'un processus utilise toujours ce fichier spécifique (il a toujours une poignée dessus)
(sous Windows, ProcessExplorer
est bon pour suivre ce type de processus)
Essayez de fermer vos autres programmes et réessayez votre git pull
.
Notez que vous avez une alternative avec la GIT_ASK_YESNO
variable .
Mise à jour janvier 2019:
Cela devrait être encore plus corrigé, avec Git 2.21 (Q1 2019), car " git gc
" et " git repack
" ne fermaient pas les fichiers de paquets ouverts qu'ils trouvaient inutiles avant de les supprimer, ce qui ne fonctionnait pas sur une plate-forme incapable de supprimer un fichier ouvert.
Cela a été corrigé.
Voir commit 5bdece0 (15 décembre 2018) par Johannes Schindelin ( dscho
) .
(Fusionné par Junio C Hamano - gitster
- dans commit 5104f8f , 18 janvier 2019)
gc
/ repack
: libérez des packs si nécessaire
Sous Windows, les fichiers ne peuvent pas être supprimés ni renommés s'il existe encore des descripteurs détenus par un processus.
Pour y remédier, nous avons introduit la close_all_packs()
fonction.
Auparavant, nous nous sommes assurés que les packs soient publiés juste avant l' git gc
apparition, au cas oùgc
souhaiteriez supprimer les packs dont vous n'avez plus besoin.
Mais ce développeur a oublié qu'il gc
doit également abandonner les packs, par exemple lors de la consolidation de tous les packs via le--aggressive
option.
De même, git repack -d
souhaite supprimer les packs obsolètes et doit donc également fermer tous les descripteurs de pack.
Mise à jour janvier 2016
Cela devrait être corrigé dans Git 2.8 (mars 2016) (et voir Git 2.19, T3 2018 ci-dessous)
Voir commit d562102 , commit dcacb1b , commit df617b5 , commit 0898c96 (13 janvier 2016) par Johannes Schindelin ( dscho
) .
(Fusionné par Junio C Hamano - gitster
- dans commit 3c80940 , 26 janvier 2016)
fetch
: fichiers du pack de publication avant le ramassage des ordures
Avant l'auto-gc'ing, nous devons nous assurer que les fichiers du pack sont libérés au cas où ils auraient besoin d'être reconditionnés et récupérés.
De nombreux chemins de code qui exécutent " gc --auto
" avant de quitter gardaient les fichiers de paquets mappés et leur laissaient les descripteurs de fichiers ouverts, ce qui n'était pas convivial pour les systèmes qui ne peuvent pas supprimer les fichiers ouverts.
Ils ferment maintenant les packs avant de le faire.
Cela résout le git-for-widows
problème 500 .
En regardant le test utilisé pour valider cette nouvelle approche , une solution de contournement possible (puisque Git 2.8 n'est pas encore sorti) serait de déclencher artificiellement gc.autoPackLimit
.
git config gc.autoPackLimit 10000
git fetch
git config gc.autoPackLimit 50 # default value
git 2.8.4 (juin 2016) mentionne le problème 755 qui devrait également atténuer le problème ( commit 2db0641 ):
Assurez-vous que les descripteurs de fichiers temporaires ne sont pas hérités par les processus enfants
En fait, le git-for-windows
problème 500 mentionné ci-dessus est vraiment résolu avec Git 2.19, Q3 2018.
Voir « Git - Dissociation du fichier .idx
et .pack
échec (le seul descripteur de processus appartenant à ce fichier est git.exe
) »