2009-07-30 16 views
7

Próbuję znaleźć najlepszy sposób na uporządkowanie naszych Repozytorów Subversion.Jak budować repozytoria Subversion

Czy najlepiej jest utworzyć początkowe repozytorium, a następnie subdokumenty dla każdego projektu poniżej?

A które repozytoria powinny mieć utworzony tułów, gałąź itp.?

Słyszałem również, że najlepiej jest nie tworzyć folderów trunk, branch i tags w repozytorium na poziomie katalogu głównego.

Wiem, że kiedy byłem w innej drużynie, wyciągnęliśmy, powiedzmy, ProjectA, ale nie zepsuł tułowia, folderów gałęzi, co było miłe, ale nie wiem, jak to było zbudowane na serwerze, aby stało się tak, jak to .

+0

Retagged z „svn” zamiast „TortoiseSVN”, ponieważ jest to kwestia repozytorium/serwer-side, a nie problem po stronie klienta . –

Odpowiedz

8

Aby uratować przyszłe bóle głowy związane z utrzymaniem, chyba że masz OGROMNE ilości kodu lub wyobrażenie, że chcesz całkowicie usunąć projekt z dużą ilością kodu, przechowuj wszystko w jednym repozytorium. Następnie utwórz katalogi dla każdego projektu. Następnie, jeśli chcesz śledzić rekomendację Subversion, umieść foldery "trunk", "branches" i "tags" w folderze każdego projektu.

+0

, więc gdy utworzę podfolder dla projektu, to skopiuję adres URL, przechodzę do tego folderu lokalnie, a następnie w jaki sposób mogę połączyć go z folderem głównym, który utworzyłem na serwerze pod folderem projektu? – PositiveGuy

+0

Podczas konfigurowania nowego repozytorium to właśnie robię. Tworzę globalne repozytorium z adresem URL takim jak "http://example.com/svn/". Sprawdzam to w nowym folderze lokalnym, I.E. "przykład-svn" (cokolwiek chcesz). Teraz "przykład-svn" jest kopią roboczą całego repozytorium. Jeśli chcesz skonfigurować foldery trunk/branches/tags, utwórz nowy folder wewnątrz "example-svn" dla "project1", a wewnątrz tego folderu utwórz "trunk", "branches" i "tags". Następnie wklej wszystkie pliki projektu1 w "trunk", kliknij prawym przyciskiem myszy "project1" i wybierz "Dodaj". Zaangażuj się i jesteś gotowy. – Nicole

+0

W powyższym przykładzie, jeśli chcesz sprawdzić całe repozytorium (wszystkie projekty), użyj "http://example.com/svn/".Jeśli chcesz sprawdzić tylko projekt1, skorzystaj z "http://example.com/svn/project1" – Nicole

14

jeśli chcesz zachować kilka projekt w repozytorium pójdę do tej struktury

/project1 
    /trunk 
    /branches 
    /tags 
/project2 
    /trunk 
    /branches 
    /tags 
... 

Jeśli chcesz zachować tylko jeden projekt będzie to zrobić:

/trunk 
/branches 
/tags 
+0

Dziękuję. Gdybym miał po raz pierwszy sprawdzić projekt1, po prostu dostanę adres URL z folderu Project1 \ trunk i użyję go, prawda? – PositiveGuy

+0

Jeśli chcesz pracować nad project1, po prostu użyjesz czegoś takiego jak 'svn: // path.to.your.repo/project1/trunk' dla twojego zamówienia – RaYell

+0

dokładnie, dziękuję! – PositiveGuy

4

Subversion book na ratunek .

+0

tak, i jest to pakiet pełen informacji, aby wprowadzić Cię w błąd jeszcze bardziej. Przeszedłem przez to i nie daje najlepszych praktyk takich jak to. – PositiveGuy

+3

Znalazłem, że to wyczyściło wiele rzeczy dla mnie. Odpowiedź RaYell jest prawie prosta z zaleceń książki. –

1

Dzięki zachowaniu osobnych repozytoriów można dostosowywać harmonogramy tworzenia kopii zapasowych i lokalizacje magazynowania na podstawie repozytorium. Ponadto, jeśli od czasu do czasu musisz przekopać się do repozytorium i wykonać pewne czynności konserwacyjne lub czyszczenia (powiedzmy, że chcesz usunąć commit z repozytu w całości ... rzadko, ale możliwe), utrzymywanie oddzielnych repozytoriów pozwoli ci to zrobić przy minimalnej ingerencji innym użytkownikom i innym repozytoriom.

To powiedziawszy - w przypadku małych projektów, te rzeczy zazwyczaj nie stanowią wielkiego problemu. Daję kolejną serdeczną rekomendację konfiguracji trunk/branches/tags.

5

Preferuję wysokopoziomowe, bardzo zorganizowane, samodzielne, uporządkowane repozytoria. Istnieje diagram ilustrujący ogólne (idealne) podejście do procesu konserwacji repozytorium. Na przykład, moja początkowa struktura repozytorium (każdy repozytorium projektu powinien mieć) to:

/project 
    /trunk 
    /tags 
     /builds 
      /PA 
      /A 
      /B 
     /releases 
      /AR 
      /BR 
      /RC 
      /ST 
    /branches 
     /experimental 
     /maintenance 
      /versions 
      /platforms 
     /releases