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.
1 De Palleas -
Je note la démarche... Tu codes souvent dans les toilettes toi ?
2 De Nicolas -
Non je n'ai pas encore adopté cette pratique car le portable me brûle les genous!
3 De Palleas -
Et puis, il ne faut pas être claustrophobe !
Je vais juste commencer à utiliser svn dans le cadre de mon boulot, c'est ouf ce que ça va être pratique (je viens de découvrir trac <3)