2010-11-19 11 views
2

J'essaie de déplacer notre dépôt svn existant vers git. Nous n'avons pas besoin de faire de synchronisation entre les deux (donc pas de git svn fetch ou dcommit) - nous ne faisons que passer et c'est tout.Pourquoi git-svn clone définit-il 'master' sur une branche aléatoire?

J'émis cette commande pour créer le dépôt git:

git svn clone -s https://server/repos/my_repo 

Ce a fonctionné très bien. Cependant, lorsque je suis entré dans le nouveau répertoire my_repo, les fichiers qui s'y trouvaient faisaient partie de l'une des branches (pas le tronc).

fait un git branches -a donne:

* master 
    modelExperimentalTrunk 
    [email protected] 
    dRefactoring 
    reorganise 
    stableV396 
    tags/v1.0 
    trunk 

Je suis sur la branche principale, mais les fichiers qui sont dans mon bac à sable sont en fait de la branche dRefactoring (une de nos succursales plus obscures).

Questions:

  • Pourquoi la branche master pas connecté à trunk?
  • Existe-t-il un moyen de le reconnecter à trunk? Ou cela peut-il être fait pendant l'étape git svn clone?
  • En outre, étant donné que cela va être sur un serveur, est-il possible de créer un référentiel --bare git svn?

Répondre

7

Renouer la branche principale à tronc est facile, il suffit de lancer:

git checkout master 
git reset --hard trunk 

Commute à la branche principale (si ce n'est pas déjà le cas) et le remet à zéro et l'arbre de travail à l'état de la branche de tronc. Après cela, vous pouvez supprimer en toute sécurité la branche de réseau. Git-svn ne supporte pas les dépôts nus prêts à l'emploi. Lisez http://gsocblog.jsharpe.net/archives/12 pour plus de détails. Mais je ne pense pas que vous ayez besoin de cette solution compliquée car vous voulez juste faire une seule importation de votre dépôt SVN.

Par conséquent, vous pouvez simplement créer un clone nu de votre référentiel git déjà existant et vous êtes configuré.