web-dev-qa-db-fra.com

Impossible de résoudre le conflit d'arborescence avec SVN

J'ai récemment rencontré un comportement très étrange de Subversion. 

Je viens de fusionner ma copie locale d'une branche avec une branche distante. Tout s'est bien passé, mais j'ai un conflit d'arborescence (suppression locale, mise à jour à distance). 

D'accord, pensais-je, modifiais la copie de travail de manière appropriée et exécutais "svn resol --accept = working -R.". 

Subversion a dit qu'il avait résolu mes problèmes et que "svn st" ne posait plus aucun problème. Donc, j'ai essayé de m'engager, mais svn m'a dit qu'un des dossiers internes (à l'intérieur de mon dossier en conflit) était obsolète et a suggéré de faire ceci, MAIS cela a rendu le dossier en conflit à nouveau!

Que dois-je faire pour sortir de ce cercle visieux?

24
Anton

Cela peut aider ou non, mais parfois, un "nettoyage SVN" résoudra des problèmes de métadonnées étranges. Si vous extrayez une copie de travail vierge, la copie vierge présente-t-elle le même problème? Si oui, alors la réponse précédente semble être un pas dans la bonne direction

8
Sam Post
~/sandbox/jabira > svn resolve  --accept=theirs-full testClient/
svn: warning: Tree conflicts can only be resolved to 'working' state; 'testClient' not resolved

~/sandbox/jabira  > svn resolve  --accept=working testClient/
Resolved conflicted state of 'testClient'

J'espère que cette aide

43
Jabir Ahmed

Vous pouvez utiliser un autre moyen que la commande svn resol:

  1. Créez un patch du fichier en conflit. (ou une sauvegarde de votre version du dossier en conflit avec svn export ...)
  2. Mettez à jour votre référentiel (svn update)
  3. Appliquez le correctif précédemment effectué (ou remplacez le fichier/dossier en conflit par la sauvegarde)
  4. Commit le changement (svn commit)
5
Phong

C'est ce qui a fonctionné pour moi d'abandonner toutes les modifications locales et d'aller avec les fichiers du référentiel du serveur:

svn update --accept theirs-full

svn resolve --accept theirs-full <pathname>

Le message suivant apparaît: W155027: Le conflit d’arbres ne peut être résolu que pour «fonctionner».

Prochaine étape peu intuitive, mais cela coupe en fait le catch-22 :

svn resolve  --accept=working <pathname>

MAINTENANT, revenez tous les changements "de travail" récursivement. Cela a annulé tous mes changements locaux.

svn revert -R .

Retour à la normale, sans erreur:

svn update
3
Chloe Tempo

Vos dossiers n'étaient probablement pas mis à jour lorsque vous avez fusionné, ou il y avait un conflit quelque part avant la fusion. Pour résoudre ce problème, vous devez restaurer votre coffre (dossier cible) à la révision précédente. Ensuite, exécutez le nettoyage sur ce dossier. Ensuite, exécutez le nettoyage sur le dossier de la branche (dossier source). Puis mettez à nouveau les deux dossiers à nouveau. Si des lignes apparaissent en rouge dans n'importe quel flux de travail, vous devez d'abord restaurer ces fichiers, puis les rendre dans l'état dans lequel vous les souhaitez. Ensuite, mettez à jour les dossiers (oui, encore une fois). Enfin, effectuez à nouveau la fusion.

0
MacGyver