2009-07-27 6 views
27

Je ne sais pas quand l'équipe svn a décidé de nous infliger des conflits d'arborescence mais elle a complètement cassé la fonctionnalité de fusion de svn.svn fusionner des fonctionnalités cassées par des conflits d'arborescence

J'ai une branche et je veux fusionner les dernières modifications du tronc dans la branche. J'ai déjà fait une telle fusion, mais celle-ci échoue à cause d'un conflit d'arborescence. 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 --force) il ne crée le conflit d'arbres et ne rien fusionner. Maintenant, il ne fait que rapporter le message ci-dessus. Si je fais svn status sur la copie de travail de la branche, elle montre tous les fichiers qui ont encore des modifications qui n'ont pas encore été fusionnées au tronc. 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'arborescence et comment je peux continuer à travailler maintenant que svn a créé ces choses.

Existe-t-il un moyen de dire à svn d'oublier les conflits d'arbres et de faire la fusion comme avant? J'utilise un client 1.6 et un serveur svn plus ancien (probablement 1.3.1).

+2

SVN n'a pas ajouté de conflits d'arborescence en tant que fonctionnalité; ils sont intrinsèques à la nature du contrôle des révisions. Maintenant, vous pouvez faire valoir que SVN fait un mauvais travail de manipulation et/ou de messagerie sur les conflits d'arbres, mais au moins, il les détecte et essaie de vous faire savoir ce qui se passe. –

Répondre

12

Le problème s'est avéré être 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 d'arbre est confus. Si svn venait juste d'aller de l'avant et fait la fusion j'aurais vu le problème instantanément.

Les conflits d'arborescence ont introduit une nouvelle sémantique de message qui prendra un peu de temps pour s'y habituer.

Merci pour le pointeur vers la documentation de Tortoise sur les conflits d'arbres. 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, cependant. Les messages de conflit d'arbres vont prendre un peu de temps pour s'y habituer.

Il semble que tout ce que vous faites dans la plupart des cas est de marquer les conflits d'arbres résolus, et dans ces cas, il semble que les conflits d'arbres ne sont que du bruit. Mark Phippard dit qu'une ancienne version du serveur ne causera pas de conflits d'arborescence. Le serveur n'a besoin d'être mis à jour que si vous voulez un suivi de fusion et que votre serveur est antérieur à la version 1.5. Apparemment, suivi de fusion est la seule chose qui manque des serveurs svn anciens:

http://eclipse.open.collab.net/ds/viewMessage.do?dsForumId=62&dsMessageId=332448 
+1

conflits d'arborescence: pensez à un répertoire en tant que fichier texte avec chaque sous-répertoire en tant que ligne. Maintenant, ajoutez et supprimez des lignes de ce fichier et fusionnez - vous aurez un conflit. C'est exactement ce qui se passe avec les conflits d'arborescence, c'est juste que l'éditeur de fusion est inexistant (évidemment, la réponse est de copier les répertoires au bon endroit et marquer comme résolus). – gbjbaanb

2

Je suppose que vous observez une mauvaise interaction entre le client 1.6 et le serveur 1.3. La détection de conflit d'arbre est une nouvelle fonctionnalité de 1.6. En outre, le support de fusion a été modifié à 1.5 (et rendu beaucoup plus utilisable ensuite). J'essaierais de mettre à jour le format serveur et repo vers la version 1.6, une autre chose à faire est d'utiliser un client 1.5 (pas de conflits d'arbres) ou 1.4 (et pas de nouvelle fusion).

Encore une fois, tout cela est une supposition et peut-être pas vraiment utile ...

+0

Je pensais rétrograder mon client à 1.5, mais svn a cette vilaine habitude de changer le format de copie de travail avec chaque nouvelle version et ma copie de travail 1.6 ne fonctionnera pas avec un client 1.5. Je dois peut-être rétrograder le client et faire une nouvelle commande. –

10

svn: Tentative d'ajouter un conflit d'arbre qui existe déjà

Subversion se plaint parce que une fois que vous avez fait un fusionner qui a généré un conflit, vous puis a fait la même fusion à nouveau. SVN a tenté d'ajouter un conflit mais a remarqué que le conflit a déjà été créé par l'opération de fusion précédente. Donc, il génère correctement un avertissement. Si vous faites une opération de fusion et que vous n'êtes pas satisfait du résultat, alors avant d'essayer autre chose, vous devez d'abord annuler les modifications locales. Comme pour le conflit d'arborescence d'origine: pour comprendre pourquoi le comportement est différent des anciens clients et comment résoudre de tels conflits, vous devez lire le section on tree conflicts dans le manuel svn. Le manuel tortoiseSVN a également un bon topic on tree conflicts.

+4

Je viens d'avoir "Tenter d'ajouter un conflit d'arbre qui existe déjà" faire une toute nouvelle fusion. Suivi de "Erreur lors de la lecture de la réponse à la demande de rapport spoolée" – fiddlesticks

+2

-1: j'obtiens cette erreur lors d'une nouvelle fusion sans fusion précédente. Je crois que ce sont deux conflits d'arbres dans la même fusion à l'origine du problème. – darreljnz

-1

Hey Guys J'ai eu exactement le même problème, les conflits d'arbres quand je tentais de faire une fusion svn. Il s'avère que Laurynas avait absolument raison. Cela se produisait parce que le référentiel svn était une ancienne version. Sur le serveur je suis allé dans le répertoire {repopath} \ db \ format et dans le fichier de format il contenait "2".

Tout ce que je ne faisais que faire un

svnadmin upgrade {repopath} 

qui était assez indolore. Après que je l'ai fait, quand j'ai essayé d'utiliser le suivi de fusion, je n'ai plus eu de conflits d'arborescence! Merci pour le conseil!

Questions connexes