Question sur les gestions de version

Comme nombre de mes connaissances, j’utilise subversion couplé à l’excellent trac pour gérer la configuration des application que je développe dans le cadre de mon travail. Subversion permet une gestion des sources au niveau du projet en gérant des évolutions qui ont un sens logique, ce qui est un réel plus lors de l’exploration de l’historique des fichiers.

Cependant, un problème se pose : un développeur part sur chantier pendant deux jours ou plus, fait de nombreuses modifications touchant à divers systèmes, puis revient. Que faire des modifications en cours dans le répertoire de travail du dit développeur ? Les remonter d’un bloc reviendrait à rendre inutile l’agencement des modifications par étapes logiques atomiques. Ce qui serait vraiment utile, c’est la possibilité de faire des livraisons hors connexion pour continuer à gérer proprement les ensembles de modifications, puis de reverser ces ensemble dans le dépot central. C’est ce que propose SVK avec la possibilité d’emporter avec soi un dépot de sources et de fusionner les changements locaux par la suite dans le dépot central.

Quand je dis “ce que propose”, la solution n’est pas parfaite encore à l’heure actuelle. En effet, toute personne qui a déjà développé avec un système de gestion de configuration en mode optimiste (tout le monde a le droit de modifier tous les fichiers en même temps) a du déjà faire face à l’apparition d’incidents de fusion qui apparaissent quand deux développeurs touchent au même morceau de code. Tous les manuels vous diront que c’est symptomatique d’un manque de communication entre développeurs, et c’est justement le cas du codeur en déplacement. Etant loin de tout pendant un certain temps, il est fort probable qu’il touche à des fichiers que les développeurs restés à la base auront aussi modifiés.

SVK permet de résoudre automatique la fusion de changements qui n’ont pas d’incidents, mais ne fournit pas de solution magique pour ces cas malheureux. Ce qui semble par contre intéressant, c’est que dans sa version 2.0 sortie dernièrement, il permet de faire des fusions incrémentales et donc de résoudre à la main au fur et à mesure les incidents pour permettre de reverser dans des bonnes conditions les ensembles de changements du développeur itinérant dans le dépot central. Celà peut sembler un pis-aller, mais il faut savoir que les théories qui traitent les problèmes de fusions de sources diverses sont très velues. De ce point de vue, SVK offre à mon avis une solution tout à fait praticable.

GodSlayer Wednesday 17 January 2007 at 10:22 pm | | Logiciels libres

One comment

Simond François

Tu as le choix entre mercurial et git, tout deux gestionnaire de dépots décentralisés, qui embarquent la totalité du dépôt localement afin de faire des commits même déconnecté. pour le détails, tu peux demander Sophie ;)\n\nLes deux profitent de “trac hacks” proposant leur intégration (à tester!)

Simond François, (URL) - 22-01-’07 23:46
(optional field)
(optional field)
Remember personal info?
Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.