Checkout remote branch en utilisant git svn

188

J'ai extrait un dépôt svn en utilisant git svn. Maintenant, je dois vérifier l'une des branches et la suivre. Quelle est la meilleure façon de procéder?

markovuksanovic
la source

Réponses:

357

Disposition Subversion standard

Créez un clone git qui inclut votre tronc Subversion, vos balises et vos branches avec

git svn clone http://svn.example.com/project -T trunk -b branches -t balises

L' --stdlayoutoption est un bon raccourci si votre référentiel Subversion utilise la structure typique:

clone git svn http://svn.example.com/project --stdlayout

Faites en sorte que votre dépôt git ignore tout ce que fait le dépôt subversion:

git svn show-ignore >> .git / info / exclude

Vous devriez maintenant pouvoir voir toutes les branches Subversion du côté git:

git branche -r

Disons que le nom de la branche dans Subversion est waldo. Du côté git, tu courrais

git checkout -b télécommandes waldo-svn / waldo

Le suffixe -svn permet d'éviter les avertissements du formulaire

avertissement: refname 'waldo' est ambigu.

Pour mettre à jour la branche git waldo-svn, exécutez

git checkout waldo-svn
git svn rebase

À partir d'une caisse uniquement dans le coffre

Pour ajouter une branche Subversion à un clone de tronc uniquement, modifiez votre dépôt git pour .git/configqu'il contienne

[svn-remote "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        fetch =: refs / remotes / mybranch

Vous devrez développer l'habitude de courir

git svn fetch --fetch-all

pour mettre à jour tout ce git svnque l'on pense être des télécommandes séparées. À ce stade, vous pouvez créer et suivre les branches comme ci-dessus. Par exemple, pour créer une branche git qui correspond à mybranch, exécutez

git checkout -b mybranch-svn télécommandes / mybranch

Pour les branches à partir desquelles vous avez l'intention de le faire git svn dcommit, gardez leur histoire linéaire!


Informations complémentaires

Vous pourriez également être intéressé par la lecture d'une réponse à une question connexe .

Greg Bacon
la source
Cela ne fonctionne pas pour moi, car j'ai vérifié le tronc en utilisant git svn clone .. Je n'ai pas défini les branches à extraire ... Je pense que je dois d'abord le faire.
markovuksanovic
Le fait est que j'ai utilisé git svn clone svn.example.com/project/trunk Et maintenant je ne sais pas comment définir d'autres branches à suivre sans perdre mon
dépôt
21
Je suggère de fournir un préfixe pour vos télécommandes svn. (ajouter --prefix=svn/en faisant git-svn initou git-svn clone) Cela éliminera le besoin d'ajouter un suffixe sur vos succursales locales.
jasonkarns
Si vous avez plusieurs branches, n'oubliez pas de faire "git checkout master" avant de vous occuper d'une autre branche
Eildosa
Si les show-ignoreerreurs surviennent, essayezgit svn show-ignore -i trunk
Antti Haapala