Git + Subversion : arrêtez d’ignorer ce que vous devriez ignorer (?!)
Par Delicious Insights • Publié le 16 sept. 2010

Parfois on se retrouve à faire du Git, en local, sur un dépôt distant Subversion. Ça arrive en fait dans deux situations :

  • On est en train de passer un dépôt de Subversion vers Git, en vue d'abandonner le premier au profit du second (yay !).
  • On est obligé de bosser sur un dépôt Subversion, mais on refuse de laisser tomber le confort quotidien de Git en local.

Git propose une passerelle au moyen de la commande git svn et de ses sous-commandes. Moyennant quelques précautions d'usage, on peut ainsi travailler avec Git en local et synchroniser vers (et depuis) le dépôt Subversion distant. C'est un sujet assez vaste et j'y reviendrai plus en détail dans un prochain billet.

Toutefois, ceux qui rencontrent déjà ces situations ont sans doute remarqué un phénomène irritant : Git ne prend pas en compte la propriété svn:ignore. En fait, il ne prend en compte que svn:executable (ce qui est déjà pas mal, vu comme elle est grave utile…).

La propriété svn:ignore est similaire au fichier .gitignore : elle permet de lister des motifs de fichiers qui ne doivent pas être versionnés. Il est donc dommage qu'on n'en bénéficie pas automatiquement sur Git, risquant ainsi de versionner par erreur des fichiers qui devraient être ignorés.

Voilà pourquoi j'ai développé un petit outil qui va automatiquement synchroniser vos svn:ignore vers vos .gitignore, à tout moment, pour votre master (c'est-à-dire votre trunk distant), sans écraser d'éventuelles infos déjà présentes dans vos .gitignore… C'est le premier d'une série probable de petits scripts du même genre, destinés à faciliter l'utilisation de Git au quotidien.

Comme mon récent outil git-basecamp, il est disponible en open-source, et documenté, sur GitHub. Je vous invite donc à jeter un œil à mon dépôt git-helpers. Notez qu'il existe aussi une quantité de dépôts nommés « git-tools » sur Github, mais aucun de ceux que j'ai regardés n'avait cette fonctionnalité (et la plupart des aides qu'ils fournissent m'ont semblé un peu basiques…).

Enjoy !