Résoudre des conflits

De temps à autre, vous obtiendrez un conflit lors d'une mise à jour de vos fichiers à partir du référentiel. Un conflit se produit quand deux développeurs ou plus ont changé les mêmes lignes d'un fichier. Comme Subversion ne connaît rien à votre projet, il laisse la résolution des conflits aux développeurs. Chaque fois qu'un conflit est annoncé, vous devriez ouvrir le fichier en question et rechercher des lignes commençant par la chaîne <<<<<<<. La zone en conflit est marquée comme cela :

<<<<<<< nom du fichier
    vos changements
=======
    code fusionné du référentiel
>>>>>>> révision

Aussi, pour chaque fichier en conflit Subversion place trois fichiers supplémentaires dans votre répertoire :

nom_du_fichier.ext.mine

C'est votre fichier comme il a existé dans votre copie de travail avant que vous mettiez à jour votre copie de travail - c'est-à-dire sans marqueurs de conflit. Ce fichier a vos derniers changements et rien d'autre.

nom_du_fichier.ext.rOLDREV

C'est le fichier qui était la révision de BASE avant que vous mettiez à jour votre copie de travail. C'est-à-dire le fichier que vous avez extrait avant de faire votre dernière édition.

nom_du_fichier.ext.rNEWREV

C'est le fichier que votre client de Subversion venait de recevoir du serveur quand vous avez mis à jour votre copie de travail. Ce fichier correspond à la révision de tête du référentiel.

Vous pouvez soit lancer un outil externe de fusion / un éditeur de conflit avec TortoiseSVNÉditer les conflits soit utiliser un autre éditeur pour résoudre le conflit manuellement. Vous devrez décider à quoi devrait ressembler le code, faites les changements nécessaires et sauvegardez le fichier.

Exécutez ensuite la commande TortoiseSVNRésolu... et livrez vos modifications au référentiel. Veuillez noter que la commande de résolution ne résout pas vraiment le conflit. Il supprime juste les fichiers nom_du_fichier.ext.mine et nom_du_fichier.ext.r*, pour vous permettre de livrer vos changements.

Si vous avez des conflits avec des fichiers binaires, Subversion n'essaye pas de fusionner les fichiers lui-même. Le fichier local reste inchangé (exactement comme la dernière fois que vous l'avez modifié) et vous avez des fichiers nom_du_fichier.ext.r*. Si vous voulez renoncer à vos changements et garder la version du référentiel, utilisez simplement la commande Revenir en arrière. Si vous voulez garder votre version et écraser la version du référentiel, utilisez la commande Résolu..., livrez ensuite votre version.

Vous pouvez utiliser la commande Résolu... pour plusieurs fichiers si vous faites un clic droit sur le dossier parent et sélectionnez TortoiseSVNRésolu... Cela affichera une boîte de dialogue listant tous les fichiers en conflit dans ce dossier et vous pouvez choisir lesquels marquer comme résolus.