Erstellen eines offiziellen Githubspiegels


108

Wie erstelle ich einen Github-Spiegel für ein externes Git-Repository, sodass er als "echter Spiegel" angezeigt wird, z. B. wie in https://github.com/mirrors ?

Bisher habe ich einen Spiegel eingerichtet mit:

cd /path/to/bare/repository
git remote add --mirror github git@github.com:user/repo.git

und konfigurieren Sie den Post-Receive-Hook für a git push --quiet github. Auf diese Weise erkennt Github den Spiegel jedoch nicht.

Irgendwelche Ideen, wie man es auf Github-Art macht, so dass "Mirrorred from" unter dem Namen des Repostiory erscheint?


2
github.com/apache/libcloud ein weiteres Beispiel für gespiegeltes Repo, alle von Apache LOL
Colin Su

Antworten:


113

Aufgrund der Kommunikation mit dem Support-Team von GitHub stellte ich fest, dass GitHub derzeit keinen direkten Mechanismus für einen Benutzer bietet, um Repositorys auf diese Weise zu spiegeln.

Sie können GitHub jedoch bitten, diesen Dienst für Repositorys zu installieren, die Teil einer Organisation sind. GitHub konfiguriert dann ein vorhandenes Repository als solchen Spiegel und ruft es in einem Intervall ab, das von der Anzahl der Gesamtspiegel abhängt.

BEARBEITEN : Wie Stuart betont, akzeptiert GitHub keine Anfragen mehr zum Spiegeln beliebiger Repositorys. Die einzige verbleibende Option ist die Lösung, die ich in meiner Frage veröffentlicht habe, dh das Erstellen eines Post-Receive-Hooks, der automatisch in Ihr GitHub-Repository übertragen wird.


9

Dem aktuellen Inhalt von https://github.com/mirrors nach zu urteilen , scheint GitHub keine "offiziellen Spiegel" mehr zu haben, da die meisten Projekte, deren Code heute auf GitHub gespiegelt werden soll, nur eine Organisation dafür sind, wie z. B. Git selbst .

Es gibt auch eine Funktionsanforderung unter: https://github.com/isaacs/github/issues/415


Einige von ihnen haben GitHub-gespiegelte Repos. Sie tun es immer noch, aber nur, wenn Sie ein Entwickler des Projekts sind, dh keine "inoffiziellen" Spiegel.
Nyuszika7h

Und wie sie sagen, nur für Organisationen.
Nyuszika7h


4

Laut Importieren eines Git :

Zu Demonstrationszwecken verwenden wir:

  • Ein externes Konto namens extuser
  • Ein persönliches GitHub-Benutzerkonto namens ghuser
  • Ein GitHub-Repository namens repo.git

Die Befehlszeile:

# 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

1
Was ist der Unterschied zwischen git clone --bareund git clone --mirror? Passt die zweite Variante hier nicht besser?
user7610

0

Ich habe ein Tool namens github-backup mit mäßigem Erfolg verwendet, um zumindest eine vollständige Sicherung (einschließlich Problemen und anderer Metadaten) eines Github-Benutzers oder einer Github-Organisation durchzuführen , wenn nicht sogar zu spiegeln. So zitieren Sie die README-Datei :

Jedes Mal, wenn Sie github-backup ausführen, werden neue Gabeln auf GitHub gefunden. Es werden Ihrem Repository Fernbedienungen für die Gabeln hinzugefügt, wobei Namen wie verwendet werden github_torvalds_subsurface. Es wird von jeder Gabel holen.

Es lädt Metadaten von jedem Fork herunter. Dies wird in einem Zweig namens "github" gespeichert. Jede Gabel bekommt dort ein Verzeichnis wie torvalds_subsurface. Innerhalb des Verzeichnisses befinden sich einige Dateien, wie z torvalds_subsurface/watchers. Es können weitere Verzeichnisse vorhanden sein, z. B. für Kommentare : torvalds_subsurface/comments/1.

Sie können den Commits zum Github-Zweig folgen, um zu sehen, welche Informationen sich im Laufe der Zeit auf GitHub geändert haben.

Das Format der Dateien im Github-Zweig ist derzeit der von Haskell serialisierte Datentyp. Dies ist einfacher Text und lesbar, wenn Sie blinzeln.

Einschränkungen umfassen:

  • Keine Unterstützung für private Repositorys
  • keine "sozialen" Sachen wie Stars, Follower usw.
  • Notizen zu Commit-Zeilen werden (noch?) nicht unterstützt.
  • Etiketten ausstellen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.