web-dev-qa-db-fra.com

Comment résoudre un conflit de fusion avec des propriétés SVN?

Cela me perturbe depuis longtemps - comment résoudre correctement un conflit de fusion dans les propriétés SVN définies sur un répertoire? Disons par exemple que deux développeurs travaillent sur un projet où svn: ignore est défini sur un répertoire. Si les deux développeurs apportent des modifications à cette propriété, ils verront un conflit de fusion lors de la mise à jour du second.

Contrairement aux conflits de fusion de fichiers, un seul fichier est généré dans le répertoire appelé "dir_conflicts.prej", que le second développeur doit lire et corriger manuellement. En général, ce que je finis par faire est de revenir à toutes mes modifications sur la copie locale, puis de redéfinir ces propriétés manuellement avec les informations contenues dans dir_conflicts.prej. Cependant, cela est plutôt fastidieux quand il s’agit de gérer une grande liste d’URL dans une propriété svn: externals, comme beaucoup de nos projets l’utilisent.

Il doit y avoir un meilleur moyen de faire cela - est-ce que quelqu'un sait comment?

40
Nik Reiman

Juste une mise à jour rapide après quelques recherches supplémentaires - il est pas possible de fusionner facilement les propriétés SVN. La méthode décrite à l'origine (rétablir, fusionner des données à partir de fichiers .prej, propset, re-commit) semble être le meilleur moyen de traiter ce type de problème.

11
Nik Reiman

En attendant, cela est possible dans Eclipse + Subclipse (Indigo) en utilisant la fonction

Equipe-> Modifier les conflits de propriétés

(juste essayé avec des propriétés svn: ignore en conflit)

Cette fonction ouvre une boîte de dialogue qui affiche les deux versions de propriétés (locale et référentiel), dans lesquelles vous pouvez copier et coller, puis résoudre le conflit en utilisant Team-> Mark Resolved.

3
Gregor

J'ai eu le même problème.

J'ai essayé d'utiliser Team-> Edit Property Conflicts mais mon STS s'est pendu et n'a pas répondu, ce qui m'a forcé à fermer.

Il est possible de résoudre avec TortoiseSVN

Voici comment j'ai résolu

  • sélectionnez le dossier où se trouve le dir_conflicts.prej
  • clic droit TortoiseSVN -> Résoudre ...
  • Il vous demandera ensuite de résoudre le conflit de propriété
  • Faire résoudre et enregistrer
3
Ashwani Kumar

Voulez-vous dire un conflit de fusion lors de la validation/mise à jour ou d'une fusion de branche? 

Le SVN Book est assez clair sur la propriété svn: ignore en particulier:

Subversion ne suppose pas que chaque fichier ou sous-répertoire D'un répertoire de copie de travail Est destiné au contrôle de version . Les ressources doivent être explicitement placées Sous la gestion de Subversion À l'aide des commandes svn add ou svn import .

...

Obliger chaque utilisateur de ce référentiel à ajouter des modèles pour ces ressources à ses zones de configuration d'exécution ne serait pas seulement un fardeau, mais risquerait de se heurter aux besoins de configuration d'autres copies de travail que l'utilisateur a extraites.

1
jtimberman

J'aimerais pouvoir offrir une solution plus optimiste, mais de par mon expérience, il n'est actuellement pas possible de fusionner des propriétés svn avec TortoiseSVN. Voir  http://svn.haxx.se/tsvn/archive-2008-09/0212.shtml.

1
Noah Goodrich

J'ai eu un conflit similaire. J'ai ouvert dir_conflicts.prej dans un éditeur de texte et j'ai vu que le svn ignore list avait été modifié. Heureusement, le contenu de la liste était identique, seul l'ordre a été modifié. Donc, dans TortoiseSVN 1.9.3, je viens de cliquer avec le bouton droit sur le dossier puis TortoiseSVN -> Resolve.... Et le conflit était résolu.

0
jpllosa

Soyons clairs, SVN semble utiliser le fichier dir_conflicts.prej pour déduire le fait que le répertoire est en conflit. Si vous avez l'intention de régler manuellement le conflit, vous pouvez simplement supprimer le fichier dir_conflicts.prej, puis définir manuellement les propriétés svn comme vous le souhaitez. (Bien sûr, assurez-vous d’obtenir ce dont vous avez besoin du fichier .prej avant de le supprimer!)

0
BrianV