web-dev-qa-db-fra.com

fonctionnalités de fusion svn interrompues par des conflits d'arborescence

Je ne sais pas quand l'équipe de svn a décidé de nous infliger des conflits d'arbres, mais cela a complètement annulé la fonctionnalité de fusion de svn.

J'ai une branche et je souhaite fusionner les dernières modifications du coffre dans la branche. J'ai déjà fait une telle fusion, mais celle-ci échoue à cause d'un conflit d'arbre. Voici la commande:

$ svn --force merge -r 3185:3192 svn://chamar2/rx-services/SAMS .
svn: Attempt to add tree conflict that already exists

La première fois que j'ai essayé cette fusion (sans le --force), cela n'a créé que le conflit d'arborescence et rien n'a été fusionné. Maintenant, il ne fait que signaler le message ci-dessus.

Si je fais svn status sur la copie de travail de la branche, il affiche tous les fichiers contenant des modifications qui n'ont pas encore été fusionnées. Bien sûr, le but de ma branche est de faire ces changements là où ils ne sont pas encore dans le coffre.

À quoi pensaient-ils lorsqu'ils ont fait cela?

Je n'ai trouvé aucune information utilisable sur les causes des conflits d'arbres et sur la façon dont je peux continuer à travailler maintenant que svn a créé ces éléments.

Existe-t-il un moyen de dire à svn d’oublier les conflits d’arbres et de procéder à la fusion comme avant?

J'utilise un client 1.6 et un serveur svn plus ancien (probablement 1.3.1).

27
Dean Schulze

Le problème s'est avéré que j'avais choisi le répertoire parent/comme source de la fusion au lieu du répertoire parent/trunk /. C'était une erreur de l'utilisateur, mais le message de conflit de l'arbre est source de confusion. Si svn venait juste de faire la fusion, j'aurais vu le problème instantanément.

Les conflits d'arbres ont introduit une nouvelle sémantique de message qui demandera un certain temps pour s'y habituer.

Merci pour le pointeur sur la documentation de Tortoise sur Tree Conflicts. C’est la seule documentation que j’ai vu qui traite des branches. L'exemple donné n'explique pas pourquoi j'ai eu des conflits d'arborescence sur les fichiers que j'avais modifiés sur la branche. Les messages de conflit d'arbre vont prendre un certain temps pour s'y habituer.

Dans la plupart des cas, il semble que tout ce que vous fassiez est de marquer les conflits d'arbres comme étant résolus et, dans ces cas, les conflits d'arbres ne sont que du bruit.

Mark Phippard dit qu'une ancienne version de serveur ne causera pas de conflits d'arborescence. Le serveur n'a besoin d'être mis à jour que si vous souhaitez prendre en charge le suivi de la fusion et que votre serveur est antérieur à 1.5. Apparemment, le suivi des fusions est la seule chose qui manque aux anciens serveurs svn:

http://Eclipse.open.collab.net/ds/viewMessage.do?dsForumId=62&dsMessageId=332448
13
Dean Schulze

Je suppose que vous observez une mauvaise interaction entre le client 1.6 et le serveur 1.3 .. La détection des conflits d’arbres est une nouvelle fonctionnalité de 1.6. En outre, le support de fusion a été modifié à 1,5 (et rendu beaucoup plus utilisable à l’époque).

J'essaierais de mettre à niveau le format du serveur et du référentiel vers 1.6. Une autre chose à faire est d'essayer d'utiliser un client 1.5 (aucun conflit d'arborescence) ou 1.4 (et aucune nouvelle fusion ni).

Encore une fois, tout cela est une supposition et pourrait ne pas être vraiment utile ...

2
Laurynas Biveinis

Hé les gars, j'avais exactement le même problème, des conflits d'arbres lorsque j'essayais de faire une fusion de fichiers. Il s'avère que Laurynas était absolument correcte. Cela se produisait car le référentiel svn était une ancienne version. Sur le serveur, je suis entré dans le répertoire {repopath}\db\format et à l'intérieur du fichier de format, il contenait "2".

Tout ce que j'ai fait était de faire un 

svnadmin upgrade {repopath}

ce qui était plutôt indolore.

Après cela, lorsque j'ai essayé d'utiliser le suivi des fusions, je n'ai plus eu de conflits d'arbres! Merci pour le conseil!

0
David