Résoudre des conflits

Des conflits peuvent se produire chaque fois que vous avez apporté des changements à un fichier qu'un autre développeur a également modifié. Le conflit est détecté par CVS lorsque vous mettez à jour le fichier modifié. CVS tente alors de fusionner les modifications validées par l'autre développeur dans votre copie de travail. La fusion échoue si ses modifications et les vôtres se trouvent dans des parties du fichier qui se chevauchent, et le serveur CVS émet un message d'erreur.

Dans la fenêtre principale de Cervisia, les fichiers en conflit sont indiqués par « Conflit » en rouge dans la colonne d'état. Il vous appartient maintenant de résoudre ces conflits avant de valider le fichier. CVS refusera de valider tout fichier en conflit jusqu'à ce qu'il ait été modifié. Vous pouvez bien sûr résoudre les conflits de manière traditionnelle depuis la fenêtre principale : il suffit de double-cliquer sur le fichier en question et de le modifier avec votre éditeur habituel.

CVS marque les changements en conflit en plaçant des crochets au milieu des fichiers, de la manière suivante :

<<<<<<<
Modifications dans votre espace de travail 
=======
Modifications dans le dépôt
>>>>>>> numéro-de-révision

Vous devrez remplacer ce bloc entier par la version récemment fusionnée. Naturellement, vous bénéficiez d'une grande liberté quand il s'agit de résoudre un groupe de conflits : pour chacun, vous pouvez décider de choisir une des deux versions alternatives. Vous pouvez également décider que les deux approches ont échoué et réécrire une routine entière voire même le fichier complet à partir de zéro.

Heureusement, Cervisia offre une interface plus conviviale pour gérer ces conflits. Cela ne signifie pas que vous n'aurez jamais à modifier manuellement les fichiers, mais elle élimine au moins le besoin de le faire pour résoudre les conflits triviaux. Pour employer la boîte de dialogue Résolution CVS de Cervisia, choisissez FichierRésoudre... ou cliquez-droit sur le fichier marqué et choisissez Résoudre... dans le menu contextuel.

Figure 3.3. Une copie d'écran de la boîte de dialogue de résolution de Cervisia

Une copie d'écran de la boîte de dialogue de résolution de Cervisia

Dans la partie supérieure da la boîte de dialogue, vous voyez Votre version (A) du fichier, sur le côté gauche et la version du dépôt, Autre version (B), sur le côté droit. Les différences entre les deux sont marquées en rouge. Au-dessous de ces deux versions, vous pouvez voir la Version fusionnée. La version fusionnée reflète ce que ce sera cette section dans votre copie de travail si vous cliquez sur le bouton Enregistrer.

Vous pouvez basculer entre les sections en conflit en cliquant sur << et >>. Au centre de la partie inférieure de la boîte de dialogue, vous pouvez voir quelle est la section actuellement marquée. Par exemple, 2 parmi 3 signifie que vous êtes actuellement positionné sur la deuxième section présentant des différences, sur un total de 3.

Maintenant, vous pouvez décider section par section quelle version vous voulez avoir dans le fichier fusionné. En cliquant sur A, vous choisissez la version que vous avez modifiée. En cliquant sur B, vous choisissez la version du dépôt. En cliquant sur A+B, les deux versions seront ajoutées et votre version sera la première. L'appui sur B+A donne le même résultat mais l'ordre sera différent : d'abord la version du dépôt, puis la vôtre.

Si aucune de ces versions ne vous satisfait, cliquez sur Édition pour ouvrir un éditeur de texte simple dans lequel vous pouvez modifier la section. Quand vous avez terminé, cliquez sur Ok pour revenir à la boîte de dialogue Résolution CVS et reprendre la résolution des conflits. Vous verrez la section que vous venez de modifier dans Version fusionnée, avec vos modifications.

Pour enregistrer vos modifications, ce qui écrasera la version de la copie de travail, cliquez sur Enregistrer. Notez que cette action enregistre vos choix non seulement dans la section que vous voyez actuellement, mais dans toutes les sections du fichier. Si vous voulez l'enregistrer dans un autre fichier, cliquez sur Enregistrer sous.... Cliquez sur Fermer pour sortir de la boîte de dialogue. Si vous fermez la boîte de dialogue sans enregistrer, les changements que vous avez faits seront perdus.