2012-07-04 14 views
5

W pracy używamy svn na serwerze, ale używam git lokalnie (przez git-svn) aby użyć prędkości/rozgałęzień/zatwierdzeń, które nie są gotowe do udostępnienia itp.Jak zachować backup repozytorium git zsynchronizowany z lokalnym One „git wypychania --mirror” lub „git zdalnego update”

Działa to dobrze, ale nie czuję się dobrze, zmieniając tylko jeden komputer na wiele dni, na wypadek, gdyby coś poszło nie tak i lubimy mieć prywatne repozytorium kopii zapasowej w naszym udziale plików.

Stworzyłem kopię mojego lokalnego repo poleceniem tak:

git clone --mirror MyRepo z:/MyRepo.git 

i dodałem to jako pilota do mojego lokalnego z tym:

git remote add backup z:/MyRepo.git 

Jaki jest najlepszy sposób na synchronizację repozytorium kopii zapasowych z moim lokalnym na koniec dnia?

Myślę, że jedną z następujących opcji, ale nie wiem, czy są one równoważne lub jeśli nie, jakie są kompromisów.

  1. W lokalnym repozytorium: git push --mirror backup

  2. Albo w repozytorium kopii zapasowej: git remote update

a nawet jeśli istnieje lepszy sposób?

+0

Coś nocnej rsync swojej .git katalogu wewnątrz cron może być bardziej odpowiednie niż przy użyciu git się jako rozwiązanie do tworzenia kopii zapasowych. Jeśli szukasz metody ręcznej, zrobi to 'git push --mirror' do repozytorium gołego. – meagar

+0

@meagar niestety mamy wszystkie laptopy, które muszą być zamykane co noc, więc nie mogę dostać pracy cron. Obecnie robisz rzeczy git push, po prostu chcesz wiedzieć, czy opcja 2 jest zasadniczo taka sama. – Argos

+0

Używam 'git push - mirror backup' (kopia zapasowa jest moim zdalnym backupem git repo). Następnie używam skryptu, który napisałem, jeśli potrzebuję przywrócić z kopii zapasowej, która uruchamia 'git fetch backup refs/remote/*: refs/remote/*' oraz niektóre rzeczy resynchronizujące git-svn (ponieważ nie chcę tego musiałem przeanalizować cały serwer SVN, ponieważ zajęło to kilka dni, aby wszystkie moje projekty były przeniesione i zajmie tylko minuty - jeśli to - aby je sklonować i odświeżyć z kopii zapasowej). –

Odpowiedz

0

Jeśli masz dostęp do serwera z repozytorium SVN, możesz użyć poniższego schematu: zainstaluj SubGit do repozytorium SVN (utworzy repozytorium Git na serwerze, które będzie stale zsynchronizowane z repozytorium SVN, ty może traktować to jako interfejs Git do repozytorium SVN). Następnie wystarczy użyć czystego interfejsu Git (pull, push) zamiast git-svn, jakby zawsze był repozytorium Git. Wszystkie zmiany zostaną automatycznie zsynchronizowane z SVN. To podejście jest nieco inne, niż opisujesz, ponieważ masz serwer lustrzany bezpośrednio na serwerze, ale może on być dla Ciebie interesujący.

+0

Obawiam się, że nie mam dostępu do serwera SVN, byłoby miłym rozwiązaniem. – Argos

Powiązane problemy