2011-02-08 15 views
28

Pracuję nad projektem obecnie na SVN. Ja jednak nie będę miał dostępu do Internetu przez kilka dni i będę pracował nad moim projektem.Praca w trybie offline z SVN na komputerze lokalnym tymczasowo

Czy istnieje sposób, aby zrobić klon repozytorium na moim komputerze lokalnym, zatwierdzić zmiany w nim, a kiedy uzyskam dostęp do Internetu "popchnąć" je do wspólnego repozytorium? Myśląc w kategoriach Mercurial tutaj, czy warto migrować całkowicie ?!

+7

bo chce zrobić w trybie offline zobowiązuje o zmianach zamiast jednego dużego changeset wszystko na końcu. –

+0

ponieważ popełniam na małych zmianach, a zatem musiałbym dokonać commit w moim repozytorium podczas podróży ... i dlatego potrzebowałbym lokalnego repozytorium (prawdopodobnie sklonowanego) do zatwierdzenia. – Karan

Odpowiedz

49

Twój problem brzmi dla mnie jak sprawę użytku dla git-svn:

  • skonfigurowała Git repo: git svn clone http://svn.example.com/project/trunk
  • będąc online swoje zmiany do SVN
  • przed przejściem w tryb offline, wykonaj git svn rebase, aby ponownie zsynchronizować repozytorium Git z repozytorium SVN
  • będąc w trybie offline, zatwierdzając repozytorium Git za pomocą git commit
  • kiedy wracając Internecie znowu zrobić git svn dcommit pchnąć zmiany z powrotem do repo SVN

Używam tego przepływu pracy codziennie!

Dostajesz dwie ogromne zalety tego:

  • kompletnym historia SVN jest archiwizowany w repo Git iw każdym repo Git, który pobiera sklonowanego z tym jednym
  • będąc w trybie offline, można przeglądać wiadomości o zatwierdzeniu, kasie innych oddziałów itp.
+1

+1 Tak, to jest dokładnie to, do czego stworzono 'git-svn'. Zacząłem używać git z tego konkretnego powodu i działa to świetnie. – sleske

+5

Co, jeśli, powiedzmy, mam kopię SVN wyewidencjonowaną kopię lokalnie. Teraz nie mam dostępu do serwera. Teraz chcę tego samego, co powyżej, a także stworzyć nowy oddział. Czy to możliwe? – karim

0

Hehehe, dobry czas na odkrycie dla siebie mercurial lub git !!

+1

Jedną z rzeczy, która denerwuje mnie na temat rtęci, jest to, że nie można zmienić podsumowania zatwierdzenia. Uważam to za ważne, ponieważ ułatwia to śledzenie, które zobowiązania są częścią tego zadania. Czy na Mercurialie istnieje lepsze podejście do kontroli wersji/zadań? – Karan

+0

@Newton Przepraszamy za pytanie, ale czym dokładnie jest podsumowanie commitów? Wiem tylko o komunikacie zatwierdzającym tekst, który jest obsługiwany, jak jest w svn – phihag

1

Zawsze jest też SVK. Nie używałem go od lat, więc nie jestem pewien, jak dobrze to działa.

+0

SVK jest wycofany. –

7

Niedorzeczną odpowiedzią byłoby migrowanie do innego narzędzia do wersji, bez urazy!

Miałem dokładny problem.
Używam SVN na moim "prawdziwym" serwerze, gdzie znajduje się "realne" repozytorium.
Kiedy wyszedłem z moim laptopem, bez internetu po prostu skopiowałem "realne" repozytorium na tym laptopie (VisualSVN + TortoiseSVN), pracowałem nad nim, zmieniłem/zatwierdziłem cokolwiek, a po powrocie po prostu "zsynchronizowałem" nowe " pliki rewizji do "prawdziwego" repozytorium.

Aby być nieco bardziej zrozumiałym: miej dwa serwery SVN, jeden lokalnie na swoim laptopie (klon) i jeden na twoim "prawdziwym" serwerze (oczywiście). Po prostu zsynchronizuj między tymi dwoma.

+1

Działa to tylko tak długo, jak w dowolnym momencie tylko jeden serwer otrzymuje nowe zestawy zmian. Ten schemat zostanie przerwany, jeśli w tym samym czasie, gdy jesteś w trybie offline i zatwierdzasz zmiany w klonie, ktoś zatwierdza zmiany w tych samych ścieżkach w oryginalnym repozytorium. – Rudi

+1

jak synchronizujesz dwa klony svn? Jak powiedział @Rudi, co, jeśli ktoś inny zobowiązuje się do pierwotnego repo? – Karan

+0

Moje podejście zakłada, że ​​jesteś jedynym uczestnikiem. W przeciwnym razie może się złamać, jak sugeruje Rudi. – Poni

5

Używam git w projekcie korzystającym z SVN z tego samego powodu, który opisałeś powyżej. Jest trochę przyzwyczajenia się do git/mercurial, ale po chwili bardzo podoba mi się nowe podejście. Dalej nigdy nie miałem żadnych problemów z używaniem git-svn, nigdy nie próbowałem mercurial i svn ..

Jeśli jesteś na Mercurial i wciąż szukasz dobrego samouczka z jednym lub dwoma chichotami pomiędzy, sprawdź to tutorial napisane przez Joel Spolsky. I jak wspomniano wcześniej, z pewnością jest świetną okazją do rozpoczęcia pracy z DVCS.

1

Nota prawna: Jestem autorem aplikacji SOS (SVN Offline Support).

Napisałem to łatwe w obsłudze narzędzie wiersza polecenia do rozwiązania dokładnie problemu związanego z pracą z SVN offline, ale działa ono nie tylko w kasach SVN, ale także w przypadku dowolnej kopii roboczej VCS (np. Bazaar, Git, fossil), lub nawet w nieśledzonych plikach. SOS umożliwia proste zatwierdzanie, rozgałęzianie, przełączanie/aktualizowanie operacji, bez całej złożonej wiedzy semantycznej wiedzy wymaganej przez tradycyjny VCS. Po powrocie do trybu online możesz zintegrować wszystkie zmiany z powrotem z bazowym systemem VCS.

Website

instalacja wymaga Python 3 i jest obsługiwane przez pip install -U sos-vcs

Powiązane problemy