Subversion śledzi zmiany w strukturze katalogów, nie tylko w treści plików. Jest to jeden z głównych powódów stworzenia Subversion jako następcy CVS.
Oto co to oznacza dla Ciebie, byłego użytkownika CVS:
Polecenia svn add i svn
delete działają tak samo na folderach jak na
plikach. Tyczy się to także poleceń svn copy oraz
svn move. Jednakże, żadne z tych poleceń
nie powoduje natychmiastowej zmiany
w repozytorium. W zamian, obiekty kopii roboczej są jedynie
umieszczane w „kolejce” oczekując na dodanie lub usunięcie.
Żadna zmiana nie zostanie odzwierciedlona w repozytorium dopóki
nie uruchomisz polecenia svn commit.
Katalogi przestały być tylko pojemnikami na wersjonowane dane;
teraz posiadają numery tak samo jak pliki. (Lub poprawniej, mówi
się o „folderze
foo/ w rewizji 5.”)
Rozważmy bardziej szczegółowo ostatni podpunkt. Wersjonowanie katalogów jest nie lada wyzwaniem. Zezwalając na kopie robocze o mieszanych rewizjach napotykamy na ograniczenia uniemożliwiające nadużywanie tego modelu w nieskończoność.
Z teoretycznego punktu widzenia, definiując „rewizję
5-tą katalogu foo” mamy na myśli
konkretny zbiór folderów i ich właściwości. Teraz załóżmy,
że zaczniemy dodawać i usuwać pliki z foo
po czym zapiszemy zmiany w repozytorium. Kłamstwem byłoby
stwierdzenie, że wciąż posiadamy folder foo
w rewizji 5. Jednakże zwiększenie numeru rewizji
foo po zapisaniu zmian, też nie
do końca byłoby prawidłowe; wciąż bowiem mogło dojść do innych
zmian w foo, których z powodu braku synchronizacji
wciąż nie otrzymaliśmy.
Subversion radzi sobie z tym problemem śledząc zapisane
dodania i usunięcia w obszarze .svn.
Kiedy w końcu uruhcommisz polecenie svn update,
wszystkie konta w repozytorium zostaną uporządkowane, a
folder otrzyma poprawnie nowy numer wersji.
Zatem dopiero po synchronizacji z repozytorium możesz
ze stuprocentową pewnością stwierdzić, że posiadasz „doskonałą”
rewizję folderu. Przez większość czasu Twoja kopia
robocza zawiera „niedoskonałą” rewizję katalogu.
Podobnie problem narasta, gdy próbujesz zapisać zmiany we własnościach katalogu. Zwykle operacja ta spowodowałaby zwiększenie lokalnego numeru rewizji katalogu kopii roboczej. Znowuż jednak nie byłoby to zgodne z rzeczywistością, gdyż wciąż mogły powstać zmiany w zawartości, których w danym momencie folder nie jest „świadom” z powodu braku aktualizacji. Z tego powodu niedozwolone jest zapisywanie zmian we własnościach katalogu, dopóki nie zostanie on zsynchronizowany.
Dyskusja na temat ograniczeń wersjonowania katalogów jest dostępna tu: „Mieszane wersje w kopii roboczej”.