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”.


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>

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


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.


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

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 '\?' 

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 -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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.