Subversion próbuje usunąć wiele nieporozumień związanych z funkcjonowaniem polecenia cvs status a cvs update.
Polecenie cvs status na dwa zadania:
po pierwsze, pokazać użytkownikowi wszystkie lokalne modyfikacje
w kopii roboczej i po drugie, pokazać, które pliki są nieaktualne.
Niestety, z powodu braku czytelności wyniku polecenia
cvs status, wielu użytkowników CVSa w ogóle
nie wykorzystuje jego możliwości. W zamian wypracowali nawyk
uruchamiania poleceń cvs update
lub cvs -n update aby szybko podejrzeć
swoje zmiany. W momencie gdy użytkownik zapomina o użyciu
opcji -n powstaje skutek uboczny w postaci
scalenia zmian z repozytorium, które mogły nie być jeszcze
do tego przygotowane.
Subversion pozbywa się tego bałaganu porzez stworzenie czytelnego dla ludzi i parserów wyniku polecenia svn status. Ponadto, svn update wypisuje tylko informacje na temat plików, które są aktualizowane, a nie na temat lokalnych modyfikacji.
svn status wypisuje wszystkie pliki, w których dokonano lokalnych zmian. Domyślnie, połączenie z repozytorium nie jest nawiązywane. Chociaż to podpolecenie posiada sporo opcji, poniżej wypisane należą do najczęściej uzywanych:
-u
Łączy się z repozytorium aby sprawdzić i wyświetlić informacje na temat plików nieaktualnych.
-v
Wyświetla wszystkie obiekty znajdujące się pod kontrolą wersji.
-N
Działa nierekursywnie (nie zagłebia się do podkatalogów).
Polecenie svn status ma dwa formaty wyswietlania wyników. W domyślnym „skróconym” formacie, lokalne modyfikacje wyglądają tak:
$ svn status M foo.c M bar/baz.c
Jeśli użyjesz przełacznika --show-updates
(-u), użyty zostanie dłuższy format:
$ svn status -u
M 1047 foo.c
* 1045 faces.html
* bloo.png
M 1050 bar/baz.c
Status against revision: 1066
W takim wypadku pojawiają się nowe kolumny. Druga z nich zawiera
gwiazdki jeżeli plik lub katalog jest nieaktualny. Trzecia
wyświetla numer rewizji danego obiektu w kopii roboczej.
W poprzednim przykładzie, gwiazda oznaczała, że plik
faces.html zostanie zmieniony podczas
aktualizacji oraz że bloo.png jest plikiem
świeżo dodanym do repozytorium. (Brak numeru rewizji obok
bloo.png oznacza, że nie istniał w kopii
roboczej.)
W tym miejscu dobrze byłoby przejrzeć listę wszystkich możliwych kodów statusowych opisanych w svn status. Poniżej przedstawiamy kilka najczęściej spotykanych:
A Zasób w kolejce do Dodania
D Zasób w kolejce do Usunięcia
M Zasób został zmodyfikowany lokalnie
C Zasób jest skonfliktowany (zmiany nie zostały kompletnie scalone między
wersjami z kopii roboczej a repozytorium)
X Zasób jest obiektem zewnętrznym dla tej kopii roboczej (może pochodzić
z innego repozytorium). Patrz „Externals Definitions”
? Zasób nie jest objęty kontrolą wersji
! Brak zasobu lub jest on niekompletny (usunięty przez narzędzie inne niż
Subversion)
Dokładniejsza dyskusja na temat polecenia svn status dostępna jest tu: „Zobacz przegląd zmian”.
svn update aktualizuje Twoją kopię roboczą oraz wypisuje tylko informacje o plikach nią objętych.
Subversion połączyło CVSowe kody P i
U w jeden tylko U. Kiedy
następuje scalenie lub konflikt, Subversion po prostu wypisuje
kod G lub C zamiast całego
wyrażenia.
Po bardziej szczegółową dyskusję na temat polecenia svn update, zajrzyj do „Synchronizacja (aktualizacja) kopii roboczej”.