web-dev-qa-db-fra.com

Créer un miroir github officiel

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 installé un miroir en utilisant:

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

et configurer le post poteau de réception 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 du github, de sorte que "Mirrorred from" apparaisse sous le nom du répertoire?

103
mavam

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 des 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 comme un tel miroir et en tire un intervalle qui est fonction du nombre de miroirs globaux dont ils disposent.

MODIFIER : 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.

107
mavam

La page suivante sur github vous fournit les instructions nécessaires pour configurer un miroir sur un dépôt git externe. https://help.github.com/articles/importing-an-external-git-repo

8
Aidamina

À 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 mis en miroir sur GitHub aujourd'hui ne font qu'une organisation pour cela, comme Git lui-même .

Il y a aussi une demande de fonctionnalité à: https://github.com/isaacs/github/issues/415

7
Stuart P. Bentley

Selon Importer 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
3
Chetabahana

J'ai utilisé un outil appelé github-backup avec un succès modéré pour, sinon miroir, au moins faire 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 de 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 va 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 contient un répertoire, 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 validations de 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:

  • aucun support de référentiel privé
  • pas de trucs "sociaux" comme les stars, les followers, etc.
  • les notes sur les lignes de commits ne sont pas supportées (encore?)
  • émettre des étiquettes
0
anarcat