Lorsqu'on doit travailler sur un projet dont le dépôt est en subversion, on n'a pas forcément envie de perdre ses petites habitudes avec git(1). Voici donc une méthode construite sur la base de la page de man (git-svn(1)) et divers documents sur le net. Je travaille dans un environnement debian etch donc certaines commandes git(1) pourront vous sembler étrange ou obsolète. Pour rappel sur une etch :

$ git --version
git version 1.4.4.4

Il faut installer les paquets git-core et git-svn pour pouvoir procéder à la suite.
Commençons par créer un environnement git propice à l'accueil d'un projet sous subversion puis importons ce projet.

$ git svn init http://svn.server/project/trunk project
$ cd project
$ git svn fetch

Le fetch peut prendre un certain temps avec un dépôt subversion distant et un grand nombre de révisions. Il est possible, dans ce cas, de ne récupérer que la dernière version ou un extrait entre deux révisions précisées :

$ git svn fetch -rREV[:REV]

Dans ce cas, l'historique sera incomplet.

Une fois l'historique subversion récupéré, un peu de nettoyage dans les objets git s'impose :

$ git repack -d

Les fichiers ne sont pas visibles sur le disque à cet instant, il y a deux alternatives pour les faire apparaitre. Soit mettre à jour les sources soit créer une branche :

$ git svn rebase
ou
$ git checkout -b dev

Je préfère personnellement la création de branche qui me semble plus en phase avec la façon dont git doit être utilisé.

A partir de là, c'est assez simple, il suffit de faire ses modifs, les publier à grand coups de git commit et les pousser vers le dépôt subversion grâce à git svn dcommit. La mise à jour de la copie locale à partir du serveur subversion se fait grâce à git svn rebase.

Malheureusement, la version de git de la etch ne permet pas simplement d'associer des branches git à des branches svn.

Références

  • git-svn(1)
  • http://kdevelop.org/mediawiki/index.php/KDevelop_4/Using_Git_for_Development
  • http://gitready.com/beginner/2009/02/04/converting-from-svn.html
  • http://google-opensource.blogspot.com/2008/05/develop-with-git-on-google-code-project.html