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.renameLimit
standardmäßig 1000 Dateien verwendet oder der Wert für diff.renameLimit
if festgelegt.
Das diff.renameLimit
wirkt sich git diff
, git show
und git log
während merge.renameLimit
gilt für merge Versuche ( git merge
, git cherry-pick
) nur.
Es ist eine gute Idee, das merge.renameLimit
zu ändern diff.renameLimit
, anstatt das zu ändern, damit git nicht versucht, bei allgemeinen Vorgängen wie dem Betrachten der git diff
Ausgabe Umbenennungen zu finden .
Um Umbenennungen anzuzeigen, können Befehle wie git show
oder git log
mit der -M
Option 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
.