Ich weiß, dass ich svn diff -r a:b repo
die Änderungen zwischen den beiden angegebenen Revisionen anzeigen kann . Was ich möchte, ist ein Unterschied für jede Revision, die die Datei geändert hat. Ist ein solcher Befehl verfügbar?
169
Antworten:
Es gibt keinen eingebauten Befehl dafür, also mache ich normalerweise einfach so etwas:
Dann können Sie es nennen mit:
quelle
svn: '.' is not a working copy svn: Syntax error in revision argument '@HEAD' svn: Syntax error in revision argument '@HEAD'
svn log --diff [path_to_file]
funktioniert genau so! stackoverflow.com/a/24938573/3185510Etwas anders als das, was Sie beschrieben haben, aber ich denke, das könnte das sein, was Sie tatsächlich brauchen:
Die Datei wird mit jeder Zeile gedruckt, der die Zeit und der Autor des Commits vorangestellt sind, der sie zuletzt geändert hat.
quelle
Wenn Sie den gesamten Verlauf einer Datei mit Codeänderungen anzeigen möchten:
quelle
--diff
da es Tests für die Option gibt, während 1.7.3 keine hat -subversion/tests/cmdline/log_tests.py
.--limit <number>
Option. Wie so:svn log --diff --limit 5 [path_to_file]
Sie können
git-svn
das Repository verwenden, um es in ein Git-Repository zu importieren, und dann verwendengit log -p filename
. Dies zeigt jeden Protokolleintrag für die Datei, gefolgt vom entsprechenden Diff.quelle
git log X..Y -o filename
Beginnen mit
Dadurch erhalten Sie eine Liste der Revisionen, in denen sich die Datei geändert hat, mit denen Sie wiederholte Aufrufe per Skript ausführen können
svn diff
.quelle
svn log -q some_file.xxx | grep ^r | awk '{print $1}' | sed -e 's/^r//' | xargs -i svn diff -rHEAD:{} some_file.xxx > ~/file_history.txt
netter kleinerDer seltsam benannte Befehl "Schuld" tut dies. Wenn Sie Tortoise verwenden, wird ein Dialogfeld "Von Revision" angezeigt. Anschließend wird eine Datei mit einer zeilenweisen Anzeige der Revisionsnummer und des Autors angezeigt.
Wenn Sie mit der rechten Maustaste auf die Revisionsinformationen klicken, können Sie ein Dialogfeld "Protokoll anzeigen" aufrufen, in dem alle Informationen zum Einchecken sowie andere Dateien, die Teil des Eincheckens waren, angezeigt werden.
quelle
Soweit ich weiß, gibt es keinen eingebauten svn-Befehl, um dies zu erreichen. Sie müssten ein Skript schreiben, um mehrere Befehle zum Erstellen aller Unterschiede auszuführen. Ein einfacherer Ansatz wäre die Verwendung eines GUI-SVN-Clients, wenn dies eine Option ist. Viele von ihnen, wie das subversive Plugin für Eclipse, listen den Verlauf einer Datei auf und ermöglichen es Ihnen, den Unterschied jeder Revision anzuzeigen.
quelle
Danke, Bendin. Ihre Lösung gefällt mir sehr gut.
Ich habe es so geändert, dass es in umgekehrter Reihenfolge funktioniert, wobei zuerst die letzten Änderungen angezeigt wurden. Was bei langjährigem Code wichtig ist, der über mehrere Jahre gepflegt wird. Normalerweise pfeife ich es in mehr.
Ich habe der Sortierung -r hinzugefügt. Ich habe spec entfernt. Behandlung für 'erste Aufzeichnung'. Es ist ein Fehler beim letzten Eintrag, da es nichts gibt, womit es sich unterscheiden könnte. Obwohl ich damit lebe, weil ich nie so weit runter komme.
quelle
Ich habe bei der Recherche zu diesem Thema eine Reihe von Teilantworten gesehen. Das hat bei mir funktioniert und ich hoffe, es hilft anderen. Dieser Befehl zeigt die Ausgabe in der Befehlszeile mit der Revisionsnummer, dem Autor, dem Revisionszeitstempel und den vorgenommenen Änderungen an:
Um Ihre Suche zu vereinfachen, können Sie die Ausgabe in eine Datei schreiben und nach dem suchen, wonach Sie suchen.
quelle