Je pousse le commit local sur le serveur git distant et j'ai reçu les messages d'avertissement suivants:
remote: warning: only found copies from modified paths due to too many files.
remote: warning: you may want to set your diff.renamelimit variable to at least 19824 and retry the command.
Mais en fait, j'ai déjà mis le diff.renamelimit à 0 (je pense que zéro signifie illimité, non?).
$ git config --list
...
diff.renamelimit=0
Alors, que dois-je faire pour éviter cet avertissement? Merci.
documentation ne mentionne pas 0 comme valeur spéciale pour diff.renamelimit
.
Vous devez donc définir cette limite à la valeur recommandée.
Ou vous pouvez essayer de désactiver complètement la détection de renommage. (git config diff.renames 0
)
Vous trouverez un exemple similaire dans ce billet de blog " Confluence, git, rename, merge oh my ... ":
Comme déjà mentionné, git essaie de détecter les renommages de fichiers après cela, par exemple lors de l'utilisation de
git log
Ougit diff/merge
.
. a Java).
Cette distinction est importante car l'algorithme de détection des renommages exacts est linéaire et sera toujours exécuté tandis que l'algorithme de détection de renommage inexact est quadratique (O(n^2)
) et git ne tente pas de le faire si le nombre de fichiers modifiés dépasse un certain seuil (1000 par défaut).Comme le nombre de fichiers affectés par la récente réorganisation dépasse ce seuil, git abandonne tout simplement et laisse la résolution de fusion au développeur. Dans notre cas, nous pouvons éviter de faire une résolution de fusion manuelle en modifiant le seuil
Remarque: Git 2.16 (T1 2018) modifiera cette limite:
Historiquement, la machinerie diff pour la détection de renommage avait une limite codée en dur de 32k chemins; cela est levé pour permettre aux utilisateurs d'échanger des cycles avec un résultat (peut-être) plus facile à lire.
Voir commit 8997355 (29 novembre 2017) par Jonathan Tan (jhowtan
) .
Voir commit 9268cf4 , commit 9f7e4bf , commit d6861d , commit b520abf (13 novembre 2017) par Elijah Newren (newren
) .
(Fusionné par Junio C Hamano - gitster
- in commit 6466854 , 19 déc 2017)
diff
: supprime la pince silencieuse derenameLimit
Dans commit 0024a54 (Correction de la vérification de la limite de détection de renommage; sept. 2007, Git v1.5.3.2), le
renameLimit
a été fixé à 32767.
Cela semble avoir été simplement pour éviter un débordement d'entier dans le calcul suivant:num_create * num_src <= rename_limit * rename_limit
Bien qu'il puisse également être considéré comme une limite codée en dur sur la quantité de temps processeur, nous sommes prêts à permettre aux utilisateurs de dire à git de consacrer à la gestion des renommages.
Une limite supérieure peut avoir du sens, mais malheureusement cette limite supérieure n'a été ni communiquée aux utilisateurs, ni documentée nulle part.Bien que de grandes limites puissent ralentir les choses, nous avons des utilisateurs qui seraient ravis qu'un petit changement de cinq fichiers soit correctement choisi, même s'ils doivent spécifier manuellement une grande limite et attendre dix minutes pour que les renommages soient détectés.
Les scripts et outils existants qui utilisent "-l0
" Pour continuer à fonctionner, en traitant 0 comme une valeur spéciale indiquant que la limite de renommage doit être un très grand nombre.
Git 2.17 (Q2 2018) évitera d'afficher un message d'avertissement au milieu d'une ligne de sortie "git diff
".
Voir commit 4e056c9 (16 janvier 2018) par Nguyễn Thái Ngọc Duy (pclouds
) .
(Fusionné par Junio C Hamano - gitster
- in commit 17c8e0b , 13 février 2018)
diff.c
: Vidagestdout
avant d'imprimer les avertissements de changement de nomLa sortie diff est tamponnée dans un objet
FILE
et pourrait encore être partiellement tamponnée lorsque nous imprimons ces avertissements (directement dansfd 2
).
La sortie est gâchée comme ceci
worktree.c | 138 +-
worktree.h warning: inexact rename detection was skipped due to too many files.
| 12 +-
wrapper.c | 83 +-
Cela empire si l'avertissement est imprimé une fois que les codes couleur de la partie graphique sont déjà imprimés. Vous recevrez un avertissement en vert ou en rouge.
Rincez d'abord stdout, afin que nous puissions obtenir quelque chose comme ça à la place:
xdiff/xutils.c | 42 +-
xdiff/xutils.h | 4 +-
1033 files changed, 150824 insertions(+), 69395 deletions(-)
warning: inexact rename detection was skipped due to too many files.
git config merge.renameLimit 999999
Que signifie merge.renameLimit
Le nombre de fichiers à prendre en compte lors de l'exécution de la détection de renommage lors d'une fusion; s'il n'est pas spécifié, la valeur par défaut est diff.renameLimit .