Mirror github to Gitlab


11

W lokalnym gitlabie stworzyłem kopię projektu nova ( https://github.com/openstack/nova ).

Jak utrzymywać synchronizację lokalnego repozytorium nova z githubem, aktualizując może raz na godzinę lub dziennie?

Chciałbym rozwiązania podobnego do opisanego tutaj dla bitnami: http://wiki.bitnami.com/Applications/BitNami_GitLab#Keeping_in_sync_with_the_GitLab_repository_at_GitHub

(Użyłem Devstack, aby zainstalować Openstack.)

Odpowiedzi:


6

GitLab ma teraz tę funkcję wbudowaną!
Od GitLab EE 8.2 jest obsługiwany . Brawo!

Pobieranie ze zdalnego repozytorium

Możesz skonfigurować repozytorium tak, aby jego gałęzie, znaczniki i zatwierdzenia były automatycznie aktualizowane z repozytorium nadrzędnego.
...

Podczas tworzenia nowego projektu możesz włączyć dublowanie repozytorium, jeśli zdecydujesz się zaimportować repozytorium z „Dowolnego repozytorium według adresu URL”. Wprowadź pełny adres URL repozytorium Git, z którego chcesz pobrać, i kliknij pole wyboru Repozytorium kopii lustrzanej .

Automatyczne dublowanie GitLab

W przypadku istniejącego projektu możesz skonfigurować pobieranie kopii lustrzanych, odwiedzając Ustawienia projektu ➔ Repozytorium i wyszukując sekcję „Wyciągnij ze zdalnego repozytorium”. Zaznacz pole „Repozytorium kopii lustrzanych” i kliknij Zapisz zmiany u dołu.
...


1
W ich przykładzie użyto gitlaba, podążyłem za nim dokładnie, z tą różnicą, że zastąpiłem tę część Githubem, a aktualizacja nigdy się nie kończy ...
MarcusJ

@MarcusJ Dokładnie tak samo tutaj, znalazłeś rozwiązanie?
MemphiZ,

Minęło trochę czasu, odkąd musiałem to zrobić, ale myślę, że zrobiłem to, używając ssh url w formacie ssh: //git@gitlab.com: UserName: RepoName.git
MarcusJ

Właśnie wykonałem tę pracę, przejście z github do gitlab jest łatwe, jeśli twoje repo jest publiczne, po prostu wklej ten adres URL w ustawieniach gitlab:, https://github.com/yourGithubUserName/repoName.gitnastępnie wybierz metodę hasła w polu combobox i pozostaw pole tekstowe hasła puste
knocte

4

Jeśli nigdy nie potrzebujesz lokalnych zatwierdzeń, zadziała następujący przepis:

Sklonuj repozytorium za pomocą --mirror:

git clone --mirror https://github.com/openstack/nova.git

Następnie w cronjob robisz to dla cogodzinnej aktualizacji:

0 * * * * cd /path/to/nova.git && git fetch

Do --mirrorustawia refspecs w taki sposób, że kolejne pobierające aktualizuje wszystkie lokalne pozycje literatury, dzięki czemu nie trzeba scalić zmiany w. Oczywiście to nie znaczy, że commity popychane do tego repo są tracone.


To nie wydaje się, że odpowiada na pytanie, jak uzyskać kopię lustrzaną w GitLab.
Ken Williams



0

Możesz to zrobić za pomocą zadań CRON .

W swoim terminalu wpisz crontab -e(aby edytować crontab) i dodaj nowy wiersz na dole z następującymi.

* 0 * * * git clone ssh://username@hostname:port/repo

Będzie uruchamiał klon codziennie o północy.


Mam nadzieję, że są to aktualizacje przyrostowe. nie trzeba ponownie pobierać wszystkich.
user186107,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.