Mit welchem ​​Befehl svn werden alle in einem Zweig geänderten Dateien aufgelistet?


81

In svn habe ich einen Zweig, der beispielsweise bei Revision 22334 erstellt wurde. Anschließend wurden Commits für den Zweig vorgenommen.

Wie erhalte ich eine Liste aller Dateien, die im Zweig geändert wurden, im Vergleich zu den Dateien im Trunk? Ich möchte keine Dateien sehen, die zwischen dem Erstellen des Zweigs und "jetzt" auf dem Trunk geändert wurden.


Ich komme ziemlich oft auf diese Frage zurück und die hilfreichste Antwort ist die, die aus @AndrewMedico gelöscht wurde, mit svn log:-D
Daniel W.

Antworten:


84

Das wird es tun, denke ich:

svn diff -r 22334:HEAD --summarize <url of the branch>

2
Vielen Dank. Ich wusste nicht einmal, von welcher Revision mein Zweig stammt, also svn log <url of the branch> | tailbekomme ich die kleinste Revisionsnummer.
fikr4n

1
Nachdem Sie dies ausgeführt haben, um eine Zusammenfassung aller Änderungen zu erhalten, können Sie jede Änderung, die Sie an Ihrem Zweig vorgenommen haben, überprüfen svn diff -r 22334(beachten Sie, dass kein Unterschied zum HEAD angegeben ist). Dies unterscheidet sich von Ihrer lokalen Arbeitskopie und ermöglicht es Ihnen, Änderungen in Ihrer Diff-Anwendung vorzunehmen.
Cherno

43

Sie können auch eine kurze Liste der geänderten Dateien abrufen, wenn dies alles ist, was Sie mit dem Befehl status mit der Option -u suchen

svn status -u

Dies zeigt Ihnen, welche Revision die Datei in der aktuellen Codebasis im Vergleich zur letzten Revision im Repository ist. Ich benutze diff nur, wenn ich tatsächlich Unterschiede in den Dateien selbst sehen möchte.

Es gibt hier ein gutes Tutorial zum Befehl svn, das viele dieser allgemeinen Szenarien erklärt: SVN-Befehlsreferenz


3
svn statuszeigt Ihnen nur lokale Änderungen. Das OP suchte nach einer Möglichkeit, alle Dateiänderungen anzuzeigen, die seit der Erstellung aus dem Trunk für den Zweig festgeschrieben wurden.
Webnesto

24

Sie können den folgenden Befehl verwenden:

svn status -q

Laut svnbook :

With --quiet (-q), it prints only summary information about locally modified items.

WARNUNG: Die Ausgabe dieses Befehls zeigt nur Ihre Änderung an. Daher schlage ich vor, eine svn upzu verwenden, um die neueste Version der Datei zu erhalten, und dann zu verwenden svn status -q, um die von Ihnen geänderten Dateien abzurufen.


Kurze aber süße Antwort.
Schüler

@ Maskarih makellose Antwort!
Gaurav

14

Dadurch werden nur geänderte Dateien aufgelistet:

svn status -u | grep M

Der SVN-Status zeigt nur Änderungen des lokalen Arbeitsbereichs an. Dies beantwortet nicht die ursprüngliche Frage in Bezug auf alle Änderungen in der Verzweigung nach ihrer Erstellung.
Webnesto

2
und Dateien, die Mim Namen enthalten
Manolete

7
svn status -u | grep ^ M
rhel.user

Ich benutze den Status -u | grep "M"
Mark Kahn

2

Die Option -u wird einschließlich Objektdateien angezeigt, wenn diese während der Kompilierung hinzugefügt werden.

Um dies zusätzlich zu überwinden, können Sie dies auch verwenden.

svn status -u | grep -v '\?' 

2
echo You must invoke st from within branch directory
SvnUrl=`svn info | grep URL | sed 's/URL: //'`
SvnVer=`svn info | grep Revision | sed 's/Revision: //'`
svn diff -r $SvnVer --summarize $SvnUrl

0

svn log -q -vZeigt Pfade an und versteckt Kommentare. Alle Pfade werden eingerückt, sodass Sie nach Zeilen suchen können, die mit Leerzeichen beginnen. Dann pfeifen cutund sortaufräumen:

svn log --stop-on-copy -q -v | grep '^[[:space:]]'| cut -c6- | sort -u

Dadurch werden alle Pfade abgerufen, die seit dem Verzweigungspunkt auf dem Zweig erwähnt wurden. Beachten Sie, dass gelöschte und hinzugefügte sowie geänderte Dateien aufgelistet werden. Ich habe dies nur verwendet, um die Dinge zu bekommen, über die ich mir Sorgen machen sollte, wenn ich einen etwas chaotischen Zweig von einem neuen Entwickler überprüfe.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.