2008-09-27 26 views
57

Moja firma ma spółkę zależną z wolnym łączem internetowym. Nasi programiści cierpią na interakcję z naszym centralnym serwerem Subversion. Czy jest możliwe skonfigurowanie dla nich urządzenia podrzędnego/lustrzanego? Będą współpracować lokalnie z serwerem, a wszystkie zatwierdzenia będą automatycznie synchronizowane z serwerem głównym.Jak zsynchronizować dwa repozytoria Subversion?

To powinno działać tak przejrzyste, jak to tylko możliwe dla programistów. Użyteczność jest koniecznością.

Brak sugestii, aby zmienić nasz system kontroli wersji.

+0

Jestem sceptyczny jak proxy może poprawić sytuację. Możliwe, że zatwierdzenie zajmuje mniej czasu dla POV użytkownika, ale dane wciąż muszą być przesyłane do wzorca, a to wciąż ma tę samą wielkość przepustowości sieci. W ten sposób aktualizowanie wzorca jest równie powolne, nawet jeśli wydaje się szybsze dla użytkownika. Z powodu tego asynchronicznego zachowania master może zacząć opóźniać się. – aseq

Odpowiedz

27

Subversion 1.5 wprowadził obsługę proxy, gdy korzystasz z protokołu http do obsługi repozytorium. Programiści mogą wymieniać swoje robocze kopie od niewolnika. Wtedy wszystkie operacje tylko do odczytu (diff, log, update itp.) Będą korzystały z slave. Podczas zatwierdzania slave przejdzie przez wszystkie operacje zapisu do wzorca.

+1

BTW , Jestem w innej pracy i nie używam już Subversion. Z powodzeniem zaimplementowałem rozwiązanie proxy. Argh, nie jest łatwo skonfigurować Apache i Subversion w Windows. Największym problemem był błąd podczas synchronizacji. Rozwiązaniem było posiadanie skryptu startowego do oczyszczenia. Teraz osoba nietechniczna może po prostu zrestartować maszynę i wszystko znów działa. – neves

+0

Występowały/są błędy, które mogą powodować, że serwer proxy Svn nie działa (dobrze). To jest powód, dla którego nie udało mi się go jeszcze uruchomić z moją konfiguracją. Zobacz na przykład http://subversion.tigris.org/issues/show_bug.cgi?id=3275 http://subversion.tigris.org/issues/show_bug.cgi?id=3445 ten drugi jest nadal otwarty. – aseq

6

Należy spróbować The SVK version control system

SVK jest zdecentralizowanym systemem kontroli wersji zbudowany z wytrzymałej Subversion plików. Obsługuje tworzenie kopii lustrzanych w repozytoriach, operację rozłączenia, scalanie historii i integruje się z innymi systemami kontroli wersji, a także z popularnymi narzędziami do scalania wizualnego.

na ten link nie jest tekst o Using SVK to Synchronize SVN Repositories

49

Jest to możliwe, ale niekoniecznie proste: problem staramy się rozwiązać jest niebezpiecznie blisko do konfigurowania środowiska rozwoju rozproszonej, który nie jest dokładnie to, co SVN jest zaprojektowany dla.

Sposób SVN-lustro

Można użyć svn mirror jak wyjaśniono w dokumentacji księgowej SVN stworzenia read-only zwierciadło repozytorium master. Twoi programiści wchodzą w interakcję z najbliższym im lustrem. Jednak użytkownicy repozytorium podrzędnego będzie musiał użyć

svn przełączyć --relocate master_url

zanim popełnią i będą musieli pamiętać, aby przenieść się z powrotem na niewolnika, gdy są one wykonane. Może to być zautomatyzowane za pomocą skryptu opakowującego wokół repozytorium modyfikującego polecenia na SVN, jeśli używasz klienta wiersza poleceń. Należy pamiętać, że operacja przeniesienia podczas szybkiego dodawania trochę narzut. (I uważać, aby powielić repozytorium UUID. - patrz the SVN documentation)

[Edit - Sprawdzenie dokumentacji TortoiseSVN wydaje się, że można mieć TortoiseSVN execute hook scripts client side. W tym momencie możesz być w stanie utworzyć skrypt przed/po zatwierdzeniu. Albo to albo spróbuj sprawdzić, czy możesz to zrobić za pomocą TortoiseSVN automation interface].

SVK sposób

svk to zestaw skryptów Perl, które naśladować rozproszoną usługę mirroring nad SVN. Możesz ustawić tak, aby lokalny oddział (mirror) był współdzielony przez wielu programistów. Wtedy podstawowe użycie dla programistów będzie całkowicie przejrzyste. Będziesz musiał użyć klienta svk do zbioru wiśni, łączenia i starmergingu. Jest to wykonalne, jeśli potrafisz opanować rozproszone koncepcje.

git-svn sposób

Choć nigdy nie użyłem, że sam może mieć również odległe programiści użyć git lokalnie i używać bramę git-svn do synchronizacji.

Ostatnie słowa

Wszystko zależy od środowiska rozwoju i poziomu integracji wymagają. W zależności od twojego IDE (i jeśli możesz zmienić SCM) możesz chcieć rzucić okiem na inne w pełni rozproszone SCM (pomyśl o Mercurial/Bazaar//...), które wspierają rozwój rozproszony po wyjęciu z pudełka.

+0

Czy jest możliwe utworzenie skryptu klienta TortoiseSVN, aby automatycznie przeprowadzić to przeniesienie? – neves

+4

Ta odpowiedź ma więcej głosów niż moja wybrana. Myślę, że rozwiązanie svnsync jest lepsze, ponieważ zatwierdzenia zachodzą w sposób przezroczysty na serwerze. Nie ma potrzeby przeprowadzki. Duża użyteczność. Użytkownicy w końcu znajdują dziwny komunikat o błędzie, gdy lustro nie jest w pełni zsynchronizowane. Zwykle po prostu trzeba poczekać kilka minut i wszystko jest w porządku. – neves

+0

Link do rozdziału redirect svn dokumentującego konfigurację proxy tranzytowego: http://svnbook.red-bean.com/en/1.7/svn.serverconfig.httpd.html#svn.serverconfig.httpd.extra.writethruproxy –

2

Jeśli jedno z repozytoriów jest w pełni przeczytane, można użyć "svnsync", aby zachować aktualność w repozytorium głównym. To narzędzie jest często używane w połączeniu z obsługą proxy, aby utworzyć konfigurację master slave.

E.g. Apache robi to, aby odzwierciedlić swoje repozytorium na różnych kontynentach. Główny repozytorium znajduje się w USA, ale jeśli mam dostęp do repozytorium z UE, otrzymuję lokalny serwer lustrzany, który działa równie dobrze jak serwer główny.

1

Istnieje rozwiązanie handlowa, która zapewnia prawdziwą aktywny-aktywny replikację (nie master-slave) repozytoriów Subversion jeśli potrzebujesz wydajności i bezpieczeństwa danych wykraczających poza to, co zapewnia svnsync o nazwie "Subversion MultiSite".

Zastrzeżenie: Pracuję dla firmy, która sprawia, że ​​rozwiązanie to

1

VisualSVN serwera Multisite Repository Replication został zaprojektowany dla tej sprawy.

Możesz zachować główne repozytorium w głównym biurze i ustawić wiele zapisywalnych repozytoriów niewolników w odległych lokalizacjach.

Powinno to działać tak przejrzyste, jak to możliwe dla programistów. Użyteczność jest koniecznością.

  • replikację pomiędzy podrzędnych i suwak jest przezroczysty i automatycznych,

  • każdy główny i podrzędny repozytorium zapisywalną repozytorium z punktu widzenia użytkownika,

  • Works prze- konfiguracja za pomocą kilku kliknięć za pomocą konsoli MMC VisualSVN Server Manager.

VisualSVNServerManagerConsoleMultisite

+4

Produkt wygląda ładnie. Po prostu zapomniałeś powiedzieć, że kosztuje tysiąc dolarów. – neves

+2

Ponadto serwer lustrzany i podrzędny muszą mieć serwer Visual SVN. – majkinetor

Powiązane problemy