Créer un miroir github officiel


108

Comment créer un miroir github pour un référentiel git externe, de sorte qu'il apparaisse comme "vrai miroir", par exemple, comme dans https://github.com/mirrors ?

Jusqu'à présent, j'ai mis en place un miroir en utilisant:

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

et configurer le crochet de réception de poste pour faire un git push --quiet github. De cette façon, cependant, github ne reconnaît pas le miroir.

Des idées sur la façon de le faire à la manière github, de sorte que "Mirrorred from" apparaisse sous le nom du répertoire?


2
github.com/apache/libcloud un autre exemple de dépôt en miroir, le tout d'Apache LOL
Colin Su

Réponses:


113

Sur la base de la communication avec l'équipe de support de GitHub, j'ai constaté que GitHub n'offre actuellement aucun mécanisme direct permettant à un utilisateur de mettre en miroir les référentiels de cette manière.

Cependant, on peut demander à GitHub d'installer ce service pour les référentiels qui font partie d'une organisation. GitHub configure ensuite un référentiel existant en tant que tel miroir et en extrait dans un intervalle qui est fonction du nombre de miroirs globaux dont ils disposent.

EDIT : comme le souligne Stuart, GitHub n'accepte plus les demandes de mise en miroir de référentiels arbitraires. La seule option restante est la solution que j'ai publiée dans ma question, c'est-à-dire la création d'un hook post-réception pour pousser automatiquement vers votre référentiel GitHub.


9

À en juger par le contenu actuel de https://github.com/mirrors , il semblerait que GitHub ne fasse plus de "miroirs officiels", car la plupart des projets qui souhaitent que leur code soit reflété sur GitHub aujourd'hui en font simplement une organisation, comme Git lui-même .

Il existe également une demande de fonctionnalité sur: https://github.com/isaacs/github/issues/415


En fait, certains d'entre eux ont des dépôts en miroir GitHub. Ils le font toujours, mais seulement si vous êtes un développeur du projet, c'est-à-dire pas de miroirs "non officiels".
nyuszika7h

Et comme on dit, uniquement pour les organisations.
nyuszika7h


4

Selon l' importation d'un Git :

À des fins de démonstration, nous utiliserons:

  • Un compte externe nommé extuser
  • Un compte d'utilisateur personnel GitHub nommé ghuser
  • Un référentiel GitHub nommé repo.git

La ligne de commande:

# 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
Quelle est la différence entre git clone --bareet git clone --mirror? La deuxième variante n'est-elle pas plus appropriée ici?
user7610

0

J'ai utilisé un outil appelé github-backup avec un succès modéré pour, sinon en miroir, au moins effectuer une sauvegarde complète (y compris les problèmes et autres métadonnées) d'un utilisateur ou d'une organisation Github. Pour citer le fichier README :

Chaque fois que vous exécutez github-backup, il trouvera toutes les nouvelles fourches sur GitHub. Il ajoutera des télécommandes à votre référentiel pour les fourches, en utilisant des noms comme github_torvalds_subsurface. Il ira chercher à chaque fourchette.

Il télécharge les métadonnées de chaque fork. Ceci est stocké dans une branche nommée "github". Chaque fork obtient un répertoire là-dedans, comme torvalds_subsurface. Dans le répertoire, il y aura des fichiers, comme torvalds_subsurface/watchers. Il peut y avoir d' autres répertoires, comme pour les commentaires: torvalds_subsurface/comments/1.

Vous pouvez suivre les commits dans la branche github pour voir quelles informations ont changé sur GitHub au fil du temps.

Le format des fichiers dans la branche github est actuellement des types de données sérialisés Haskell. C'est du texte brut et lisible si vous plissez les yeux.

Les limitations incluent:

  • pas de support de référentiel privé
  • pas de trucs "sociaux" comme les stars, les abonnés, etc.
  • les notes aux lignes de commits ne sont pas prises en charge (encore?)
  • émettre des étiquettes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.