SVN-impossible de fusionner la branche à nouveau dans le tronc - nombreux conflits d'arbres

j'ai ce que je pensais être un scénario simple-en utilisant TortoiseSVN:

1) j'ai fait une branche (B2) d'une application (pour travailler sur la mise en œuvre d'image sprites & JAWR).

2) l'analyse et le développement s'est comme d'habitude sur le tronc.

3) j'ai rétabli la branche à quelques reprises au cours des derniers jours par:

3.1) tronc fusionné (par plage de révisions) de la copie de travail de ma branche-b2, résolution des conflits au cours de la fusion.

3.2) (après avoir testé la branche-b2), j'engage la nouvelle branche-b2.

ça a marché comme je m'y attendais. Mais fusionner la branche de nouveau dans le tronc a son chemin avec moi:

4) après toutes les mises à jour effectuées dans la branche-b2, Je M'assure de faire une mise à jour SVN sur le tronc et la branche-b2.

5) Ensuite, j'essaie de fusionner (intervalle de révisions) de la branche b2 dans le tronc. Toutefois, pour tout nouveau dossier cela avait été ajouté au tronc, et ensuite ajouté à la branche-b2 quand je l'ai rebasé, j'ai eu un conflit d'arbre. Je ne suis pas sûr de ce que la bonne manière est de résoudre ces conflits.

le Conseil le plus typique que j'ai vu est de supprimer les fichiers tree-conflict du tronc, puis fusionner la branche; ou supprimer le tronc entier, copier les fichiers de la branche, puis les propager comme une nouvelle version dans le tronc. Aucune de ces options ne semble être une bonne idée. la douleur, et les deux semblent comme ils perdraient l'historique des révisions de fichiers.

Qu'est-ce que j'ai fait de mal, et comment je le Répare?

51
demandé sur mitch_moop 2009-06-17 22:06:57

6 réponses

sonne comme si vous utilisiez le style de fusion pré-1.5 et essayiez de réintégrer la branche dans le tronc. Dans ce cas, ce que vous voulez faire est d'abord vous assurer que toutes les modifications du tronc ont été fusionnées dans la branche, et ensuite au lieu de fusionner la branche à une copie de travail qui pointe vers le tronc, vous voulez fusionner "du tronc@HEAD à la branche@HEAD" avec la copie de travail pointant vers le tronc. En substance:

Donnez-moi toutes les modifications que j'avais besoin de faire le tronc identiques la branche".

cela fonctionne si vous avez déjà fusionné tous les changements de tronc à la branche, car alors la seule différence entre le tronc et la branche sont les changements effectués dans la branche.

ça a un sens? :)

71
répondu Rytmis 2009-06-17 18:32:47

j'ai enquêté sur le même problème. Il est "feature" en tortue SVN 1.6.5. TortoiseSVN 1.5 fonctionne très bien avec notre repositoty (SVN 1.5). TortoiseSVN 1.6.5 lorsque rebasing ajoute des fichiers de la ligne principale COMME nouveau (sans enregistrer merge-history).

Et la réintégration de la Direction Générale a pour résultat de traiter ces dossiers comme étant en conflit avec mainline.

j'ai résolu le problème en utilisant la caractéristique de TortoiseSVN 1.6"reintegrate branch". Il est spécifiquement reformulé pour fonctionnalité-branches.

-- Alexey Korsun

3
répondu user185717 2009-10-07 15:59:33

Je ne pouvais pas vraiment comprendre comment la solution ci-dessus devait fonctionner de sorte que mon travail autour est différent. D'abord, je me suis assuré que la branche contenait toutes les modifications du tronc.

1) j'ai une copie du coffre. 2) j'ai exporté la branche à un endroit temporaire en utilisant la tortue svn export. 3) j'ai utilisé l'Explorateur de windows pour copier l'arbre entier de branche sur le tronc et ai surligné tous les fichiers 4)j'ai utilisé la commande vérifier les changements sur la tortue et inclus tous case à cocher pour les fichiers non révisés. 5)j'ai sélectionné tous les fichiers et cliqué sur ajouter.

vous devez utiliser des solutions qui n'ont pas été construites de sorte que les fichiers non révisés ne comprennent pas la sortie.

je ne peux pas attendre jusqu'à ce que nous avons mise à niveau à 1,5+

1
répondu sth 2009-10-25 09:34:25

sélectionnez révisions à fusionner tout en sélectionnant" fusionner une gamme de versions " option utilisant TortoiseSVN. Cela empêchera les conflits d'arborescence pour les mêmes fichiers de revenir pour chaque opération de fusion.

1
répondu Dev 2012-07-16 10:05:19

voici un peu plus d'infos pour contribuer à la réponse de @Rytmis qui m'aide à garder les choses claires.

de Haut niveau, étapes de la fabrication du tronc exactement comme une branche ou une étiquette:

  1. départ du coffre.
  2. utilisant la copie de travail du tronc, fusionner du tronc à la branche/étiquette.
  3. s'Engager.

exemple de commande en ligne "svn":

svn checkout <trunk url>
cd trunk
svn merge <trunk url> <branch/tag url>
svn commit -m "<message>"
1
répondu Jesse 2015-06-02 19:17:17

je pense que j'ai résolu ce problème. 1. Droite cliquez sur "branche" qui vous fusionnées. 2. Cliquez sur tortue SVN > > fusionner 3. "Fusionner une série de révisions" et suivant 4. !!!Cochez "Reverse Merge"!!! , URL pour fusionner à partir de "branche", plage spécifique "révision récemment fusionnée", et suivant 5. Prochain 6. SVN Commite

après ça je peux fusionner de la branche dans le tronc.

0
répondu user8224326 2017-06-28 06:41:08