2010-10-25 8 views
1

J'ai un dépôt qui ressemble à ceci:Comment éviter les conflits d'arborescence lors de la fusion de branches déplacées?

/a/trunk/Library 
/a/branches/FeatureX/Library 
/b/trunk/Application 
/b/branches/FeatureX/Application 

Je veux réorganiser cela pour que je les dossiers d'application et la bibliothèque à côté de l'autre:

/a/trunk/Library 
/a/trunk/Application 
/a/branches/FeatureX/Library 
/a/branches/FeatureX/Application 

J'ai essayé d'y parvenir en simplement "svn copy" -dans les dossiers "Application". Le problème auquel je suis confronté est que lorsque j'essaie de fusionner "FeatureX" en "trunk" plus tard, je reçois un conflit d'arborescence car "Application" a été ajouté à la fois dans le tronc et dans la branche.

Y a-t-il une meilleure façon de procéder?

(BTW i ne peut pas fusionner "FeatureX" avant copie "Application", ceci est juste un test pour voir s'il sera possible plus tard ...)

Répondre

0

OPTION 1: fusionner les changements du tronc (aka/b/trunk/Application) à votre/a/branches/FeatureX. Cela devrait vous donner un dossier d'application 'original' dans la branche FeatureX. Effectuez ensuite une fusion delta en utilisant/b/trunk/Application et/b/branches/FeatureX/Application et en fusionnant ces modifications à une copie de travail de/a/branches/FeatureX/Application. Cela devrait vous permettre de fusionner proprement/a/branches/FeatureX vers/a/trunk. OPTION 2: Ne pas svn copy/b/trunk/Application vers/a/trunk. Plutôt svn copy/b/branches/FeatureX/Application à/a/branches/FeatureX. Puis fusionnez ces modifications à/a/trunk lorsque vous êtes prêt. S'il y a des changements dans/b/trunk/Application qui ne sont pas dans/b/branches/FeatureX/Application, vous voudrez reconfigurer cette branche avant de faire la copie svn sur/a/branches/FeatureX.

+0

Dans l'option 1, ne devrait-il pas être "aka/b/trunk/Application"? – hmn

+0

Si je comprends bien vos solutions, dans les deux options, la mise en page finale n'est réalisée qu'après avoir fusionné "FeatureX" en "trunk" comme dernière étape. Mais dans mon scénario, "FeatureX" ne sera pas fusionné pendant des semaines ou des mois, alors que je voudrais implémenter la nouvelle mise en page de dépôt maintenant. – hmn

+0

J'ai corrigé le chemin, vous avez raison. – jgifford25

0

OPTION 3: D'après votre commentaire sur la réponse précédente, essayez ceci. Faites une copie SVN de/b/trunk/Application vers un/trunk/Application. Faites une fusion d'arborescence de/a/trunk à partir de la révision que vous avez créée/a/branches/FeatureX avec la plus récente (plus que probablement HEAD) de/a/trunk contenant le répertoire Application et appliquez-la à votre copie de travail de/a/branches/FeatureX. Engagez ces changements. Faites maintenant une autre fusion delta de/b/branches/FeatureX/Application vers/a/branches/FeatureX/Application par rapport à votre copie de travail de/a/branches/FeatureX/Application. Validez ces modifications dans le référentiel. Vous devriez avoir toutes les modifications dans/a/trunk qui se trouvaient dans/b/trunk et toutes les modifications dans/b/branches/FeatureX dans/a/branches/FeatureX et être prêtes à être fusionnées dans/a/trunk quand tu es prêt. Cependant, vous perdrez l'historique direct de tous les commits de/b/branches/FeatureX/Application dans/a/branches/FeatureX/Application. Vous pouvez toujours voir l'historique de/b/branches dans/a/branches avec l'option -g avec la commande svn log.

0

Effectuez votre copie SVN sur le tronc uniquement de "Application". Créez une nouvelle branche à partir du tronc: featurex2. Fusionner featurex et featurex2. Supprimer featurex c'est un nussaince attrayant maintenant.