Der Blog - Eintrag " Confluence, git, Umbenennungs, merge oh mein ... " , fügt einige interessante Informationen , die zeigt , Robie ‚s Antwort (upvoted):
Beim Versuch, Umbenennungen zu erkennen, unterscheidet git zwischen exakten und ungenauen Umbenennungen mit:
- Ersteres ist eine Umbenennung, ohne den Inhalt der Datei zu ändern, und
- Letzteres ist eine Umbenennung, die Änderungen am Inhalt der Datei enthalten kann (z. B. Umbenennen / Verschieben einer Java-Klasse).
Diese Unterscheidung ist wichtig, da der Algorithmus zum Erkennen exakter Umbenennungen linear ist und immer ausgeführt wird, während der Algorithmus zum Erkennen ungenauer Umbenennungen quadratisch ist ( O(n^2)) und git dies nicht versucht, wenn die Anzahl der geänderten Dateien einen bestimmten Schwellenwert überschreitet (1000 mal) Standard).
Wenn nicht explizit festgelegt, werden merge.renameLimitstandardmäßig 1000 Dateien verwendet oder der Wert für diff.renameLimitif festgelegt.
Das diff.renameLimitwirkt sich git diff, git showund git logwährend merge.renameLimitgilt für merge Versuche ( git merge, git cherry-pick) nur.
Es ist eine gute Idee, das merge.renameLimitzu ändern diff.renameLimit, anstatt das zu ändern, damit git nicht versucht, bei allgemeinen Vorgängen wie dem Betrachten der git diffAusgabe Umbenennungen zu finden .
Um Umbenennungen anzuzeigen, können Befehle wie git showoder git logmit der -MOption verwendet werden, die die Umbenennungserkennung aktiviert.
Linus erwähnt :
Ja, für den Kernel habe ich
[diff]
renamelimit=0
das Limit vollständig zu deaktivieren, da das Standardlimit in der Tat sehr niedrig ist. Git ist ziemlich gut in der Umbenennungserkennung.
Der Grund für die niedrige Standardeinstellung liegt jedoch nicht darin, dass sie nicht schnell genug ist, sondern darin, dass sie möglicherweise viel Speicher verbraucht (und wenn Sie wenig Speicher haben, bedeutet das Austauschen, dass sie von "ziemlich schnell" auf "ziemlich schnell" wechselt "langsam wie Melasse" - aber es wird immer noch nicht CPU-begrenzt sein, es ist nur wie verrückt paging).
too many files skipping inexact rename detection.