Wersje folderów

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:

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