Lors de la fusion de quelques branches (en utilisant SVN 1.6.1) où un fichier a été ajouté sur les deux branches (puis travaillé dans ces branches séparées), j'obtiens l'un des nouveaux conflits d'arborescence:
C foo.txt
> local obstruction, incoming add upon merge
J'ai besoin des changements des deux branches, mais le conflit d'arborescence ne me donne pas les fichiers .working, .merge-left et .merge-right habituels - ce qui est compréhensible en raison de la nature du conflit. Il existe un certain nombre de ces conflits, et ceux où une suppression du même fichier a eu lieu sur chaque branche, mais ils sont simples à résoudre.
Comment puis-je résoudre ce problème? Le livre SVN redbean (pour 1.6) ne couvre pas cette situation.
la source
J'ai trouvé un article suggérant une solution pour cela . Il est sur le point de courir:
qui revendiquera les fichiers de la version locale comme OK.
Vous pouvez l'exécuter pour un seul fichier ou des catalogues de projet entiers.
la source
alias mtc='stat | awk "BEGIN { FS=\" \" } /^.{6}C/ { print \$NF }"'
Ensuite, je peux utiliser ceci comme argument de la commande de résolution, comme ceci:svn resolve --accept working $(mtc)
svn resolve --accept working path/index.html
svn resolution --accept base
la source
J'ai juste réussi à me caler en essayant de suivre les conseils de user619330 ci-dessus. La situation était: (1): j'avais ajouté quelques fichiers en travaillant sur ma branche initiale, branch1; (2) J'ai créé une nouvelle branche, branch2 pour un développement ultérieur, en la branchant du tronc puis en fusionnant mes modifications de branch1 (3) Un collègue avait copié mes mods de branch1 dans sa propre branche, ajouté d'autres mods, puis a fusionné avec le coffre; (4) Je voulais maintenant fusionner les dernières modifications de trunk dans ma branche de travail actuelle, branch2. C'est avec svn 1.6.17.
La fusion avait des conflits d'arborescence avec les nouveaux fichiers, et je voulais la nouvelle version du tronc où ils différaient, donc à partir d'une copie propre de branch2, j'ai fait une suppression svn des fichiers en conflit, commis ces changements branch2 (créant ainsi un temporaire version de branch2 sans les fichiers en question), puis a fait ma fusion à partir du tronc. J'ai fait cela parce que je voulais que l'historique corresponde à la version du tronc afin de ne pas avoir plus de problèmes plus tard en essayant de fusionner avec le tronc. La fusion s'est bien déroulée, j'ai obtenu la version du tronc des fichiers, svn st montre que tout va bien, puis j'ai rencontré plus de conflits d'arbres en essayant de valider les modifications, entre la suppression que j'avais faite plus tôt et l'ajout de la fusion. Est-ce que svn a résolu les conflits en faveur de ma copie de travail (qui avait maintenant la version de tronc des fichiers), et l'a fait valider.
Et bien non. Une mise à jour d'une autre copie de branch2 a abouti à l'ancienne version des fichiers (fusion avant le tronc). Alors maintenant, j'ai deux copies de travail différentes de branch2, supposément mises à jour vers la même version, avec deux versions différentes des fichiers, et toutes deux insistant sur le fait qu'elles sont entièrement à jour! L'extraction d'une copie propre de branch2 a abouti à l'ancienne version (pré-trunk) des fichiers. Je les mets à jour manuellement vers la version du tronc et je valide les modifications, je retourne à ma première copie de travail (à partir de laquelle j'avais soumis les modifications du tronc à l'origine), j'essaie de la mettre à jour et j'obtiens maintenant une erreur de somme de contrôle sur les fichiers en question. Soufflez le répertoire en question, obtenez une nouvelle version via la mise à jour, et enfin j'ai ce qui devrait être une bonne version de branch2 avec les changements de tronc. J'espère. Attention développeur.
la source