2017-02-20 2 views
1

Y a-t-il un moyen d'utiliser un mécanisme git clone/fetch pour garder le repo dans mon clone à jour y compris tous les refs/télécommandes/de la télécommande?Existe-t-il un moyen de cloner un dépôt git, y compris ses dépôts distants?

Cela n'a rien à voir avec git fetch --all, git pull --all ou git svn. Il s'agit juste de copier les télécommandes d'une télécommande sur un clone.

Une commande comme celui-ci serait génial:

git clone --include-remote-remotes [email protected]:TheGitSvnClone 

Et puis périodiquement

git fetch --update-remote-remotes origin 

Quelques détails:

La télécommande a son propre nom à distance svn qui contient certaines branches:

A la suite de
  • refs/heads/master
  • refs/télécommandes/svn/tronc
  • refs/télécommandes/svn/Branch1
  • refs/télécommandes/svn/succursale2

la Je clone attends un dépôt git normal, y compris une copie de travail (fichiers vérifiés) et sur les refs suivants:

  • refs/heads/master
  • (refs/remotes/origin/master)
  • refs/télécommandes/svn/trunk
  • refs/télécommandes/svn/Branch1
  • refs/télécommandes/svn/succursale2

je peux » t utilisez git clone --mirror car cela crée un référentiel nu.

Pourquoi est-ce si compliqué?

Notre société utilise actuellement svn. En attendant, je prépare la migration de svn vers git.

Malheureusement git svn fetch prend pour toujours sur ma machine Windows alors j'utilise une machine Linux qui fait le git svn fetch périodiquement et puis je copie le repo git résultant en utilisant FileZilla.

+0

Copie possible de [Can "git pull --all" mettre à jour toutes mes branches locales?] (Http://stackoverflow.com/questions/4318161/can-git-pull-all-update-all-my-local -branches) – Stony

+0

Non.Cela n'a rien à voir avec le fait de tirer/extraire d'autres télécommandes. –

+1

Ce que je ne comprends pas, c'est pourquoi vous ne passez pas complètement à git? Pourquoi faites-vous de telles choses avec fetch et copie? – Stony

Répondre

2

Après le clonage du dépôt normalement, demandez Git pour aller chercher les refs à distance:

git config --add remote.origin.fetch '+refs/remotes/svn/*:refs/remotes/svn/*' 

git fetch ultérieures appels télécharger les svn refs.