Tworzenie oficjalnego serwera lustrzanego Github

108

Jak utworzyć serwer lustrzany github dla zewnętrznego repozytorium git, tak aby wyglądał jak „prawdziwy serwer lustrzany”, np. Https://github.com/mirrors ?

Do tej pory ustawiłem lustro za pomocą:

cd /path/to/bare/repository
git remote add --mirror github [email protected]:user/repo.git

i skonfiguruj punkt odbioru wiadomości, aby wykonać git push --quiet github. W ten sposób jednak github nie rozpoznaje lustra.

Jakieś pomysły, jak to zrobić na githubie, tak, że „Mirrorred from” pojawia się pod nazwą repostiory?

mavam
źródło
2
github.com/apache/libcloud kolejny przykład lustrzanego repozytorium, wszystko z Apache LOL
Colin Su

Odpowiedzi:

113

Na podstawie komunikacji z zespołem wsparcia GitHub stwierdziłem, że obecnie GitHub nie oferuje bezpośredniego mechanizmu umożliwiającego użytkownikowi tworzenie kopii lustrzanych repozytoriów w ten sposób.

Można jednak poprosić GitHub o zainstalowanie tej usługi dla repozytoriów, które są częścią organizacji. Następnie GitHub konfiguruje istniejące repozytorium jako takie lustro i pobiera z niego w odstępach czasu zależnych od ogólnej liczby posiadanych serwerów lustrzanych.

EDYCJA : jak wskazuje Stuart, GitHub nie akceptuje już próśb o dublowanie dowolnych repozytoriów. Jedyną pozostałą opcją jest rozwiązanie, które zamieściłem w swoim pytaniu, tj. Utworzenie podpięcia po odbiorze, aby automatycznie wypchnąć do repozytorium GitHub.

mavam
źródło
9

Sądząc po aktualnej zawartości https://github.com/mirrors , wydaje się, że GitHub nie robi już „oficjalnych kopii lustrzanych”, ponieważ większość projektów, które obecnie chcą, aby ich kod był odzwierciedlany w GitHub, po prostu tworzy dla niego organizację, taką jak sam Git .

Istnieje również prośba o funkcję pod adresem : https://github.com/isaacs/github/issues/415

Stuart P. Bentley
źródło
W rzeczywistości niektóre z nich mają repozytoria lustrzane GitHub. Nadal to robią, ale tylko jeśli jesteś programistą projektu, czyli nie ma „nieoficjalnych” serwerów lustrzanych.
nyuszika7h
I jak mówią, tylko dla organizacji.
nyuszika7h
4

Zgodnie z Importing a Git :

Do celów demonstracyjnych użyjemy:

  • Konto zewnętrzne o nazwie extuser
  • Osobiste konto użytkownika GitHub o nazwie ghuser
  • Repozytorium GitHub o nazwie repo.git

Linia poleceń:

# Makes a bare clone of the external repository in a local directory  
$ git clone --bare https://githost.org/extuser/repo.git

# Pushes the mirror to the new GitHub repository
$ cd *repo.git*
$ git push --mirror https://github.com/ghuser/repo.git

# Remove the temporary local repository.
$ cd ..
$ rm -rf repo.git
Chetabahana
źródło
1
Jaka jest różnica między git clone --barei git clone --mirror? Czy nie bardziej pasuje tu drugi wariant?
user7610
0

Użyłem narzędzia o nazwie github-backup z umiarkowanym sukcesem, jeśli nie lustrzanym, przynajmniej do wykonania pełnej kopii zapasowej (w tym problemów i innych metadanych) użytkownika lub organizacji Github. Cytując plik README :

Za każdym razem, gdy uruchomisz github-backup, znajdzie on nowe rozwidlenia na GitHub. Doda piloty do twojego repozytorium dla wideł, używając nazw takich jak github_torvalds_subsurface. Będzie pobierał z każdego widelca.

Pobiera metadane z każdego rozwidlenia. Jest to przechowywane w gałęzi o nazwie „github”. Każdy fork otrzymuje tam katalog, na przykład torvalds_subsurface. W katalogu będą znajdować się pliki, takie jak torvalds_subsurface/watchers. Nie może być dalsze katalogi, jak za komentarze: torvalds_subsurface/comments/1.

Możesz śledzić zatwierdzenia do gałęzi github, aby zobaczyć, jakie informacje zmieniły się w GitHub w czasie.

Format plików w gałęzi github to obecnie zserializowane typy danych Haskell. To jest zwykły tekst i czytelny, jeśli zmrużysz oczy.

Ograniczenia obejmują:

  • brak obsługi prywatnego repozytorium
  • żadnych „społecznościowych” rzeczy, takich jak gwiazdy, obserwatorzy itp
  • uwagi do wierszy zatwierdzeń nie są obsługiwane (jeszcze?)
  • wydawać etykiety
anarcat
źródło