2009-08-22 8 views
1

Donc, il ya le gars sur Internet qui a écrit une tonne de code et stocké tout sur github. Un jour, dit le gars juste en haut et disparaît en supprimant tous ses dépôts. Heureusement, il y avait beaucoup de forks de ses projets principaux, mais il y avait encore beaucoup de petits repos qui n'étaient pas fourchus. Cependant, j'ai réussi à utiliser l'API Github pour retirer périodiquement les pensions de ce type et j'ai donc une copie de tous les «petits projets» mentionnés ci-dessus. Cependant, il y a un problème: ce que j'ai sont le contenu des répertoires .git de chaque repo. Je ne sais pas comment tirer parti de ces répertoires .git afin de les fourcher efficacement, créant ainsi des miroirs assez complets de leurs repos correspondants.Comment forker un projet git avec seulement le répertoire .git?

Une guidance?

-m

Répondre

6

Avez-vous essayé:

git clone /path/to/repo.git repo 
9

man git?

utiliser simplement git clone git://domain.tld/path/to/repos.git

2

Si vous voulez seulement créer un miroir, vous pouvez simplement cp -R le répertoire .git.

Ce n'est pas un problème que vous "seulement" avez les répertoires .git, car cela contient tout. Vous pouvez extraire une version complète de n'importe quel point de l'historique en utilisant le contenu du répertoire .git.

Si vous parlez de _why, il y a un gars qui exécute un compte appelé whymirror (http://github.com/whymirror) qui apprécierait probablement ces repos. La façon d'obtenir un clone sur github serait:

  1. Créer le repo sur github
  2. Allez dans votre repo locale, utilisez git remote add github [email protected] pour ajouter l'adresse de github à votre clone
  3. Utilisez git push -f github pour envoyer une exacte copie de votre repo jusqu'à github.
1

L'URL à utiliser dépend de si vous avez un repo nu ou non. Allez dans le répertoire où se trouve votre repo et ls. Si vous voyez:

HEAD  branches/ description index  logs/  packed-refs svn/ 
ORIG_HEAD config  hooks/  info/  objects/ refs/ 

Vous avez un dépôt brut. Si, au contraire, vous ne voyez que le répertoire .git, ce n'est pas le cas. Si vous avez un repo nu, l'adresse file://path/to/repo recherchera /path/to/repo.git (au moins dans mon expérience).

Si vous ne disposez pas d'une prise en pension nue, vous pouvez utiliser le chemin vers le répertoire contenant le répertoire .git