Git-svn

, par MiKaël Navarro

Le but est de definir un workflow afin de faire du développement décentralisé sur un dépot tel que Subversion.

Pour cela nous allons utiliser Git-svn

 Création du dépot Git à partir du Subverion :

$ git svn init -s https://path/to/svn/repo dest/
ou
$ git svn init -T trunk -b branches -t tags https://path/to/svn/repo dest/

Ceci va créer un répertoire dest/ contenant le reposirory .git
Cette commande n’importe pour l’instant rien de Subversion.

C’est la commande $ git svn fetch qui importera effectivement toutes les branches, tags et le trunk (cela peut prendre du temps !).

P.S. une autre possibilité est de directement cloner le dépot :

$ git svn clone -s https://path/to/svn/repo dest/

 Si l’on utilise svn:ignore : $ git svn show-ignore > .gitignore

 Bon ! Passons aux dev (comme d’hab, on évite de toucher à la branche master) :

$ git checkout -b dev [remotes/trunk]
$ git add ...
$ git commit -a -m "..."

 Maintenant que les dévs sont fait, on reporte sur le dépot svn :

$ git svn rebase

a pour effet de se réaligner avec la branche svn.

Ok, maintenant, reste à comitter :

$ git svn dcommit

P.I. quelques commandes utiles :

$ git branch -a

montre toute les branches (remotes compris).

$ git repack -d

permet de *packer* le dépot Git après un fetch de Subversion (diminu l’espace disque).

Un peu de conf :

$ git config --global core.name "klnavarro"
$ git config --global core.email "klnavarro@gmail.com"
$ git config --global core.editor vi

Des alias :

~/.aliasrc
alias git-svn-pull="git svn rebase"
alias git-svn-push="git svn rebase && git svn dcommit"