Manuals

Rozdział 3. Repozytorium

Spis treści

Tworzenie repozytorium
Tworzenie repozytorium przy użyciu klienta linii poleceń
Tworzenie repozytorium przy użyciu TortoiseSVN
Lokalny dostęp do repozytorium
Dostęp do repozytorium na udziale sieciowym
Układ repozytorium
Archiwizacja repozytorium
Skrypty przechwytujące po stronie serwera
Linki pobierania
Dostęp do repozytorium

Bez względu na protokół użyty by uzyskać dostęp do repozytoriów, zawsze trzeba utworzyć co najmniej jedno repozytorium. Można to zrobić albo za pomocą klienta linii poleceń Subversion albo TortoiseSVN.

Jeśli jeszcze nie utworzyliście repozytorium Subversion, teraz nadszedł czas, aby to zrobić.

Tworzenie repozytorium

Tworzenie repozytorium przy użyciu klienta linii poleceń

  1. Utwórzcie pusty folder o nazwie SVN (np. D:\SVN\), który będzie używany jest jako korzeń dla wszystkich repozytoriów.

  2. Utwórzcie inny folder MyNewRepository wewnątrz D:\SVN\.

  3. Otwórzcie okno wiersza poleceń (lub DOS-Box), przejdźcie do D:\SVN\ i wpiszcie

    svnadmin create --fs-type fsfs MyNewRepository
    

Macie teraz nowe repozytorium znajdujące się w D:\SVN\MyNewRepository.

Tworzenie repozytorium przy użyciu TortoiseSVN

Rysunek 3.1. Menu TortoiseSVN dla niewersjonowanych folderów

Menu TortoiseSVN dla niewersjonowanych folderów

  1. Otwórzcie eksplorator windows

  2. Utwórzcie nowy folder i nazwijcie go np. SVNRepository

  3. Kliknijcie prawym przyciskiem myszy na nowo utworzony folder i wybierzcie TortoiseSVNTwórz repozytorium tutaj.

    Repozytorium jest tworzone wewnątrz nowego folderu. Nie wolno edytować tych plików samemu!!!. W przypadku wystąpienia jakichkolwiek błędów upewnij się, że folder jest pusty i niezabezpieczony przed zapisem.

    Zostaniecie również zapytani, czy chcesz utworzyć strukturę katalogów w repozytorium. Dowiedzcie się więcej o opcjach układu katalogów przez link „Układ repozytorium”.

    Podczas tworzenia repozytorium TortoiseSVN ustawia niestandardową ikonę folderu, dzięki czemu można łatwo zidentyfikować lokalne repozytoria. Jeśli stworzysz repozytorium przy użyciu oficjalnego klienta linii poleceń, ikona nie zostanie przypisana do folderu.

Podpowiedź

Oczywiście nie polecamy również w ogóle używania dostępu przez file:// za wyjątkiem lokalnego testowania. Korzystanie z serwera jest bardziej bezpieczne i niezawodne jeśli nie korzysta z niego jeden deweloper.

Lokalny dostęp do repozytorium

Aby uzyskać dostęp do lokalnego repozytorium potrzebna Ci ścieżka do jego folderu. Wystarczy pamiętać, że Subversion wymaga, by wszystkie ścieżki repozytorium były w postaci file:///C:/SVNRepository/. Zwróćcie uwagę na użyte wewnątrz ukośniki.

Aby uzyskać dostęp do repozytorium znajdującego się na udziale sieciowym można użyć mapowania dysku lub ścieżki UNC. Dla ścieżek UNC, użyć należy formy file://NazwaSerwera/ścieżka/do/repoz/. Należy pamiętać, że występują tu tylko 2 wiodące ukośniki.

Przed SVN 1.2, ścieżki UNC musiały być wprowadzane w bardziej niejasnej formie file:///\NazwaSerwera/ścieżka/do/repoz. Ta forma jest nadal obsługiwana, ale nie zalecana.

Dostęp do repozytorium na udziale sieciowym

Choć teoretycznie jest możliwe umieszczenie repozytorium FSFS na udziale sieciowym i dostęp wielu użytkowników za pomocą protokołu file://, jest to zdecydowanie nie zalecane. W rzeczywistości mocno odradzamy i nie wspieramy takiego jego wykorzystania z różnych powodów:

  • Po pierwsze dajecie wszystkim użytkownikom bezpośredni dostęp do zapisu w repozytorium, więc każdy użytkownik może przypadkowo usunąć całe repozytorium lub uczynić je bezużytecznym w inny sposób.

  • Po drugie, nie wszystkie protokoły udostępniania plików w sieci wspierają blokady, których wymaga Subversion, więc może się okazać, że repozytorium zostanie uszkodzone. Może nie stanie się to od razu, ale pewnego dnia dwóch użytkowników będzie próbowało uzyskać dostęp do repozytorium w tym samym czasie.

  • Po trzecie, uprawnienia do plików muszą być ustawione dokładnie takie, jak trzeba. Być może ominiecie problem wykorzystując natywne współdzielenie z systemu Windows, ale z SAMBĄ jest to szczególnie trudne.

  • Gdy jakaś osoba zainstaluje nowszą wersję klienta, która zaktualizuje format repozytorium, wszyscy inni nie będą mogli uzyskać dostępu do repozytorium, póki nie zaktualizują klienta do nowej wersji.

Dostęp przez file:// jest przeznaczony dla lokalnego dostępu jednego użytkownika tylko, w szczególności podczas testowania i debugowania. Jeśli chcesz udostępnić repozytorium, naprawdę konieczne jest postawienie odpowiedniego serwera, a to nie jest tak trudne, jak mogłoby się wydawać. Czytajcie „Dostęp do repozytorium” by uzyskać wytyczne dotyczące wyboru i konfiguracji serwera.

Układ repozytorium

Przed zaimportowaniem informacji do repozytorium, należy najpierw zastanowić się, jak chcecie zorganizować swoje dane. Jeśli użyjecie jednego z zalecanych układów będzie Wam później znacznie łatwiej.

Istnieje kilka standardowych, zalecanych sposobów organizowania repozytorium. Większość ludzi tworzy katalog trunk trzymający główną linię rozwoju, folder branches zawierający odgałęziające się kopie i tags zawierający etykietowane kopie. Jeśli repozytorium posiada tylko jeden projekt, ludzie tworzą często katalogi najwyższego poziomu:

/trunk
/branches
/tags
    

Ponieważ ten układ jest tak często używany podczas tworzenia nowego repozytorium za pomocą TortoiseSVN, program będzie również proponował Wam utworzenie struktury katalogów.

Jeśli repozytorium zawiera wiele projektów, ludzie często indeksują swój układ według gałęzi:

/trunk/paint
/trunk/calc
/branches/paint
/branches/calc
/tags/paint
/tags/calc
    

... lub według projektu:

/paint/trunk
/paint/branches
/paint/tags
/calc/trunk
/calc/branches
/calc/tags
    

Indeksowanie według projektu ma sens, jeśli projekty nie są ściśle powiązane i każdy jest sprawdzany indywidualnie. Dla projektów powiązanych, na których moglibyście chcieć pobrać wszystkie projekty na raz, lub gdy wszystkie projekty są ze sobą powiązane w jednym pakiecie dystrybucyjnym, często lepiej jest indeksować według gałęzi. W ten sposób masz tylko jedną linię główną do pobrania, a relacje między podprojektami są bardziej widoczne.

Jeśli przyjąć podejście z najwyższym poziomem /trunk /tags /branches, nie potrzeba nadmieniać, że należy skopiować cały folder trunk do osobnego folderu w branch lub tags, a pod pewnymi względami ta struktura oferuje wysoką elastyczność.

Dla niepowiązanych projektów wolicie może użyć oddzielnych repozytoriów. Kiedy zatwierdzacie zmiany, zmieniany jest numer wersji całego repozytorium, a nie numer wersji projektu. Trzymanie dwóch niepowiązanych projektów dzielących jedno repozytorium może oznaczać duże przeskoki w numerach wersji. Projekty w Subversion i TortoiseSVN wyświetlane są pod tym samym adresem hosta, ale użycie zupełnie niezależnych repozytoriów umożliwi samodzielny rozwój i brak nieładu przy numerach kompilacji.

Oczywiście, możecie swobodnie zignorować te powszechne układy. Możecie tworzyć dowolne mutacje, byleby najlepiej spełniały oczekiwania Wasze i Waszych zespołów. Pamiętajcie, że cokolwiek wybierzecie, nie stanowi to trwałego zobowiązania. Możecie zreorganizować repozytorium w dowolnym momencie. Ponieważ gałęzie i etykiety są ​​zwykłymi folderami, TortoiseSVN może przenieść lub zmienić ich nazwy jednak chcecie.

Przełączenie z jednego układu do drugiego jest tylko kwestią opublikowania serii ruchów po stronie serwera; Jeśli nie lubicie sposobu, w jaki rzeczy uporządkowane są w repozytorium, po prostu przestawcie katalogi dookoła.

Więc jeśli nie utworzyliście jeszcze podstawowej struktury folderów wewnątrz repozytorium powinniście to zrobić teraz. Istnieją dwa sposoby osiągnięcia tego celu. Jeśli chcecie po prostu stworzyć strukturę /trunk /tags /branches, możecie skorzystać z przeglądarki repozytorium, aby utworzyć trzy foldery (w trzech odrębnych zatwierdzeniach). Jeśli chcecie stworzyć szerszą hierarchię, prostszym sposobem jest utworzenie najpierw struktury folderów na dysku i zaimportowanie jej jednym zatwierdzeniem, w taki sposób:

  1. utwórzcie nowy pusty folder na dysku twardym

  2. utwórzcie pożądaną strukturę folderów na najwyższego poziomu wewnątrz tego folderu - nie umieszczajcie w nim jeszcze plików!

  3. wczytajcie tą struktury do repozytorium przez kliknij prawym klawiszem myszy na folderze, który zawiera strukturę katalogów i wybierzcie TortoiseSVNImportuj.... W oknie dialogowym importu wpiszcie adres URL do repozytorium, a następnie kliknijcie OK. w ten sposób folder temp zostanie wczytany do katalogu głównego repozytorium, aby utworzyć podstawowy układ repozytorium.

Zauważcie, że nazwa folderu, z którego są importowane nie pojawi się w repozytorium, a tylko jego zawartość. Na przykład, utwórzcie następującą strukturę folderów:

C:\Temp\New\trunk
C:\Temp\New\branches
C:\Temp\New\tags

Zaimportujcie C:\Temp\New do katalogu głównego repozytorium, a będzie on wyglądać tak:

/trunk
/branches
/tags

TortoiseSVN homepage