Jakie polecenie svn wyświetli listę wszystkich plików zmodyfikowanych w gałęzi?

82

W svn mam gałąź, która została utworzona, powiedzmy w wersji 22334. Następnie dokonano zatwierdzeń w gałęzi.

Jak uzyskać listę wszystkich plików, które zostały zmienione w gałęzi, w porównaniu z tym, co jest na linii głównej? Nie chcę widzieć plików, które zostały zmienione na linii głównej między momentem utworzenia gałęzi a „teraz”.

Trenton
źródło
Wracam do tego pytania dość często i najbardziej pomocną odpowiedzią jest ta usunięta z @AndrewMedico, z svn log:-D
Daniel W.

Odpowiedzi:

84

Myślę, że to zrobi:

svn diff -r 22334:HEAD --summarize <url of the branch>
andy
źródło
2
Dzięki. Nawet nie wiedziałem, z jakiej wersji jest moja gałąź, więc robię, svn log <url of the branch> | tailaby uzyskać najmniejszy numer wersji.
fikr4n
1
Po uruchomieniu tego, aby uzyskać podsumowanie wszystkich zmian, jeśli chcesz przejrzeć każdą zmianę, którą wprowadziłeś w swojej gałęzi, możesz użyć svn diff -r 22334(zauważ, że nie określono różnicy w HEAD). Spowoduje to różnicę z lokalną kopią roboczą i umożliwi dokonywanie zmian z poziomu aplikacji porównującej.
Czerno
43

Możesz także uzyskać szybką listę zmienionych plików, jeśli to wszystko, czego szukasz, używając polecenia statusu z opcją -u

svn status -u

To pokaże ci, jaka wersja znajduje się w pliku w bieżącej bazie kodu w porównaniu z ostatnią wersją w repozytorium. Używam diff tylko wtedy, gdy chcę zobaczyć różnice w samych plikach.

Jest tutaj dobry samouczek dotyczący polecenia svn, który wyjaśnia wiele z tych typowych scenariuszy: Dokumentacja polecenia SVN

Robert Duchnik
źródło
3
svn statuspokaże tylko lokalne modyfikacje. OP szukał, jak wyświetlić wszystkie zmiany w plikach, które zostały zatwierdzone w jego gałęzi od czasu jej utworzenia z linii głównej.
webnesto
25

Możesz użyć następującego polecenia:

svn status -q

Według svnbook :

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

OSTRZEŻENIE: Dane wyjściowe tego polecenia pokazują tylko Twoją modyfikację. Proponuję więc zrobić, svn upaby pobrać najnowszą wersję pliku, a następnie użyć, svn status -qaby pobrać zmodyfikowane pliki.

maskarih
źródło
Krótka, ale słodka odpowiedź.
Uczeń
@maskarih flawless answer!
Gaurav,
14

Spowoduje to wyświetlenie tylko zmodyfikowanych plików:

svn status -u | grep M
Łowca
źródło
Status svn pokazuje tylko lokalne modyfikacje obszaru roboczego. nie jest to odpowiedź na pierwotne pytanie dotyczące wszystkich zmian w gałęzi po jej utworzeniu.
webnesto
2
oraz pliki, które zawierają Mw nazwie
Manolete
7
svn status -u | grep ^ M
rhel.user
Używam statusu -u | grep "M"
Mark Kahn
2

Opcja -u wyświetli wraz z plikami obiektowymi, jeśli zostaną dodane podczas kompilacji.

Więc, aby to przezwyciężyć, możesz dodatkowo użyć w ten sposób.

svn status -u | grep -v '\?' 
Binny Jeshan
źródło
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
Hasski
źródło
0

svn log -q -vpokazuje ścieżki i ukrywa komentarze. Wszystkie ścieżki są wcięte, więc możesz wyszukiwać wiersze zaczynające się od białych znaków. Następnie podłącz cuti sortposprzątaj:

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

Spowoduje to pobranie wszystkich ścieżek wymienionych w gałęzi od momentu jej rozgałęzienia. Zauważ, że wyświetli listę usuniętych i dodanych, a także zmodyfikowanych plików. Po prostu użyłem tego, aby pobrać rzeczy, o które powinienem się martwić, recenzując na nieco niechlujnej gałęzi od nowego dewelopera.

Sweavo
źródło