2010-02-10 13 views
6

Mam główny projekt, nad którym pracuję, który ma kilka modułów/katalogów. Główny projekt jest powiązany z lokalnym repozytorium svn. jednak za każdym razem, gdy robię commit, chciałbym również przesłać niektóre moduły/katalogi do repozytorium kodu Google. Jednak chcę tylko aktualizować z lokalnego repozytorium. Czy jest sposób, aby zrobić to automatycznie? moja IDE emacs 23.svn commit do wielu repozytoriów

Dzięki

Odpowiedz

6

To jest how the SVN book recommends robisz to. Wydaje się to dość bolesne i zasadniczo obraca się wokół posiadania roboczej kopii dla każdego repo i dosłownego kopiowania zmian między nimi (prawdopodobnie mógłbyś to zrobić również z łatkami SVN).

Alternatywnie można look into using SVK (która jest warstwą dystrybucji dla SVN, dodając funkcjonalność Git-ish do SVN), aby skonfigurować repozytorium mirroring or merging na zewnętrzne repozytorium. Uwaga, dokumentacja SVK jest trochę zdezorganizowana. Wygląda na to, że pomoc w wierszu poleceń jest dobra.

4

Każda kopia pracy w punktach SVN do jednego repozytorium. Co możesz zrobić, to użyć svn switch, aby zmienić swoje repozytorium tak, aby wskazywało repozytorium kodu Google, przed aktualizacją i zatwierdzeniem katalogów, które chcesz tam przechowywać. Następnie można przełączyć się z powrotem do miejsca kopii roboczej w swoim standardowym repozytorium. Oczywiście opiera się to na kompatybilności struktur katalogów z obydwoma repozytoriami.

1

Jeśli się nie mylę, przełącznik SVN nie jest rozwiązaniem.

Przełącznik SVN nie tylko łączy (lub przełącza) katalog roboczy z jednego repozytorium do innego repozytorium! Wykonuje również cichą aktualizację (lub kasę) z nowego repozytorium. Tak więc, jeśli się nie mylę, wszelkie lokalne modyfikacje w katalogu roboczym zostaną utracone, ponieważ zostaną nadpisane przez nowe repozytorium.

Wygląda na to, że musi istnieć jedna kopia robocza dla każdego repozytorium i dosłownie kopiować zmiany między oryginalnym katalogiem roboczym a pozostałymi.

1

Wygląda na to, że istnieje lepsze rozwiązanie dzięki zastosowaniu svnsync.

  1. Zainicjuj repozytorium kopii lustrzanej do synchronizacji z repozytorium źródłowego. Jest to pierwszy svnsync operacja uruchomienia na repozytorium niedoszły Lustro:

    svnsync initialize MIRROR_URL SOURCE_URL 
    
  2. przenieść wszystkie oczekujące zmiany z repozytorium źródła do repozytorium Lustro:

    svnsync synchronize DEST_URL 
    
  3. Tylko na wybrane lub specjalne okazje do kopiowania oczekujących wersji zgodnie z instrukcją:

    svnsync copy-revprops DEST_URL [REV[:REV2] 
    
Powiązane problemy