361 votes

Pourquoi ai-je des conflits d'arbres dans Subversion ?

J'avais une branche de fonctionnalité de mon tronc et je fusionnais périodiquement les modifications de mon tronc dans ma branche et tout fonctionnait bien. Aujourd'hui, j'ai fusionné la branche avec le tronc et tous les fichiers qui ont été ajoutés à mon tronc après la création de ma branche ont été signalés comme un "conflit d'arbre". Existe-t-il un moyen d'éviter cela à l'avenir ?

Je ne pense pas qu'ils soient correctement signalés.

0 votes

Pouvez-vous donner une recette pour reproduire ce problème à partir d'un référentiel vide ?

0 votes

J'essaierai de trouver un peu de temps aujourd'hui pour créer un nouveau dépôt et le tester et obtenir les mêmes résultats, puis je vous enverrai un message. Merci.

404voto

gicappa Points 3779

J'ai trouvé la solution en lisant le lien que Gary a donné (et je suggère de suivre cette voie).

Résumer pour résoudre le conflit de l'arbre commettre votre répertoire de travail avec le client SVN 1.6.x vous pouvez utiliser :

svn resolve --accept working -R .

. est le répertoire en conflit.

AVERTISSEMENT : "Livrer votre répertoire de travail" signifie que la structure de votre bac à sable sera celle que vous livrez, donc si, par exemple, vous supprimez des fichiers de votre bac à sable, ils seront également supprimés du référentiel. Ceci ne s'applique qu'au répertoire en conflit.

De cette façon, nous suggérons le SVN pour résoudre le conflit ( --resolve ), accepter la copie de travail dans votre bac à sable ( --accept working ), de manière récursive ( -R ), en partant du répertoire courant ( . ).

Dans TortoiseSVN, sélectionner "Résolu" au clic droit, résout effectivement ce problème.

33 votes

De cette façon, vous suggérez à svn de résoudre le conflit (--resolve), en acceptant la copie de travail à l'intérieur de votre bac à sable (--accept working), récursivement (-R), en commençant par le répertoire courant (.) HTH

23 votes

Dans TortoiseSvn, sélectionner "Résolu" au clic droit, résout effectivement ce problème.

0 votes

Je peux confirmer que cela fonctionne : Faites un clic droit sur le dossier problématique dans l'explorateur Windows (si vous utilisez Windows)->choisissez TortoiseSvn->Résolu. Merci beaucoup understack.

61voto

Gary.Ray Points 4042

Subversion 1.6 a ajouté les conflits d'arbre pour couvrir les conflits au niveau du répertoire. Un bon exemple serait lorsque vous supprimez localement un fichier puis qu'une mise à jour essaie d'apporter un changement de texte sur ce fichier. Un autre exemple est lorsque vous avez un Renommage Subversion d'un fichier que vous éditez puisque c'est une action d'Ajout/Suppression.

Le blog Subversion de CollabNet contient un excellent article sur Conflits entre les arbres .

9 votes

Aucun des exemples que vous donnez ne correspond à ma situation. Peut-être ma description n'est-elle pas claire ?

34voto

shmimpie Points 157

D'après mon expérience, SVN crée un conflit d'arborescence CHAQUE fois que je supprime un dossier. Il ne semble pas y avoir de raison.

Je suis le seul à travailler sur mon code -> supprimer un répertoire -> commit -> conflit !

Je suis impatient de passer à Git .

Je dois préciser que j'utilise Subclipse . C'est probablement le problème ! Encore une fois, j'ai hâte de changer...

2 votes

Même problème avec le client de ligne de commande SVN, donc ce n'est pas Eclipse.

3 votes

J'ai le même problème avec NetBeans et SVN. Suppression du répertoire -> conflit.

2 votes

Même problème ici... très très ennuyeux... il faut REVERT, mettre à jour, supprimer et commettre...

29voto

Smarb Points 211

Je ne sais pas si cela vous arrive, mais il m'arrive de choisir le mauvais répertoire à fusionner et j'obtiens cette erreur, même si tous les fichiers semblent tout à fait corrects.

Ejemplo:

Fusionner /svn/Project/branches/some-branch/Sources vers /svn/Project/trunk ---> Conflit d'arbres

Fusionner /svn/Project/branches/some-branch vers /svn/Project/trunk ---> OK

C'est peut-être une erreur stupide, mais ce n'est pas toujours évident parce que vous pensez qu'il s'agit de quelque chose de plus compliqué.

7voto

kaleissin Points 577

Cela peut être dû au fait que les clients n'utilisent pas tous la même version.

L'utilisation d'un client version 1.5 et d'un client version 1.6 vers le même référentiel peut créer ce genre de problème. (Je viens moi-même d'être piqué).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X