Notez que ce message d'erreur ne s'appliquera pas uniquement à votre branche actuelle, mais à toute branche vérifiée en tant que worktree.
"git fetch
"(man) sans l'option --update-head-ok
devrait protéger une branche vérifiée contre les mises à jour, afin d'empêcher l'arborescence de travail qui la vérifie de se désynchroniser.
Le code était écrit avant l'utilisation de "git worktree
"(man) n'est devenue courante, et vérifiait uniquement la branche vérifiée dans l'arborescence de travail actuelle, qui a été mise à jour avec Git 2.35 (T1 2022).
Voir commit 593a2a5, commit 9fdf4f1, commit 38baae6, commit 8bc1f39, commit c8dd491, commit 7435e7e, commit c25edee, commit 66996be (01 décembre 2021) par Anders Kaseorg (andersk
).
(Fusionné par Junio C Hamano -- gitster
-- dans commit 13fa77b, 21 décembre 2021)
fetch
: protéger les branches vérifiées dans toutes les arbres de travail
Signé par : Anders Kaseorg
Refuser de récupérer dans la branche actuellement vérifiée de n'importe quelle arborescence de travail, pas seulement celle en cours.
Résout ce bug précédemment signalé.
Comme effet secondaire de l'utilisation de find_shared_symref
, nous refuserons également la récupération lorsque nous sommes sur un HEAD détaché car nous sommes en train de rebaser ou de bisecter sur la branche en question.
Cela semble être un changement sensé.
Avec Git 2.37 (T3 2022), la façon dont "git fetch
"(man) sans --update-head-ok
garantit que HEAD dans aucune arborescence de travail ne pointe vers une référence en cours de mise à jour était trop gaspillée, ce qui a été optimisé un peu.
Voir commit f7400da (16 mai 2022) par Orgad Shaneh (orgads
).
(Fusionné par Junio C Hamano -- gitster
-- dans commit 5ed49a7, 25 mai 2022)
fetch
: limiter la vérification partagée des symboles seulement pour les branches locales
Signé par : Orgad Shaneh
Cette vérification a été introduite dans 8ee5d73 ("Corriger la récupération/tirage lorsqu'elle est exécutée sans --update-head-ok
", 2008-10-13, Git v1.6.1-rc1 -- fusion) afin de se protéger contre le remplacement de la référence de la branche active par erreur, par exemple en exécutant git fetch origin master:master
(man) .
(voir "Pourquoi "git fetch origin branch:branch
" fonctionne uniquement sur une branche non courante ?")
Cela a ensuite été étendu dans 8bc1f39 ("fetch
: protéger les branches vérifiées dans toutes les arbres de travail", 2021-12-01, Git v2.35.0-rc0 -- fusion listée dans batch #4) pour analyser toutes les arbres de travail.
Cette opération est très coûteuse (prend environ 30s dans mon dépôt) lorsque qu'il y a de nombreuses étiquettes ou branches, et elle est exécutée à chaque récupération, même si aucune tête locale n'est mise à jour du tout.
Limitez-la pour protéger uniquement refs/heads/*
afin d'améliorer les performances de la récupération.