Emmener son code en voyage

Lorsque je développe sur un projet, j'utilise subversion et je fais souvent des "commit" pour éviter de garder dans mon répertoire de travail du code modifié et non propagé sur le serveur. Tout va bien lorsqu'on est connecté au serveur central mais si on est dans le train, à la campagne, dans un avion, ou dans les toilettes, cela devient plus problématique.

Le fait que subversion ne soit pas un gestionnaire de version distribué rend la connexion au serveur obligatoire pour faire des mises à jour. J'ai pris l'habitude faire des mises à jours régulières voire très régulières surtout sur des parties du code qui varient beaucoup. De ce fait, lorsque je ne suis pas connecté au serveur, je ne peux suivre cette politique de mise à jour. Mais heureusement svk est là. svk rend la gestion de subversion décentralisée. svk utilise le système de fichiers de subversion mais ajoute des foncitonnalités supplémentaires - surtout la gestion du mode déconnecté-.

Voici comment je l'utilise par exemple sur un projet que nous nommerons HelloWorld. Le dépôt se trouve sur http://svn.central-depot.com/svn/hello_world. Il faut bien évidemment commencer par installer svk, mais apt est mon ami et après le "apt-get install svk" qui va bien, le tour est joué!

Il faut ensuite initialiser le dépôt local:
# svk depotmap --init

Faire un miroir du dépot central, en local:
# svk mirror http://svn.central-depot.com/svn/hello_world //hello_world

Jusque là on n'a toujours aucun code en local! Il faut maintenant faire la synchronisation entre dépôt distant et dépôt local:
# svk sync //hello_world

Désormais on peut travailler en mode déconnecté. On est à jour vis-à-vis du dépôt. On commence par se créer une branche locale:
# svk cp //hello_world/trunk //local/hello_world

Le //local n'est qu'une convention. Vous pouvez évidemment nommer votre branche comme bon vous semble. Après on se crée une copie de travail tout comme on le ferait avec subversion sauf que les commandes sont du type "svk commande" au lieu de "svn commande" :
# svk co //local/hello_world /path/to/my/work/hello_world

On peut ensuite faire des modifications. Pour finir un petit exemple de mise à jour vers le dépôt. Par exemple, pour faire une mise à jour (merge) entre mes modifications locales et le dépôt, je fais:
# svk sync //hello_world (récupération éventuelle de modification)
# svk merge -C -rREV1:REV2 //local/hello_world //hello_world/trunk (le -C correspond au dry-run)
# svk merge -rREV1:REV2 //local/hello_world //hello_world/trunk

Pour que tout soit parfait, il me manque un mode équivalent à psvn pour svk.

Haut de page