2010-09-21 11 views
1

J'ai un projet SVN (1.6.12) contenant un tronc et une branche. J'essaie d'apprendre comment fonctionne la fusion.Problème de poulet et d'œuf Subversion

project 
+ trunk (14) 
+ branches 
    + test-branch (14) 

Les chiffres entre parenthèses sont les numéros de révision. J'exécute une fusion de la jonction à la branche de test en utilisant les commandes "cd branches/test-branch; svn merge svn+ssh://.../trunk" et validez les modifications avec "svn commit -m 'Merged trunk'". Ma structure de répertoire ressemble maintenant à ceci:

project 
+ trunk (14) 
+ branches 
    + test-branch (15) 

J'essaie ensuite de faire une fusion réinsèrent entre le tronc et test branche: « cd trunk; svn merge --reintegrate svn+ssh://.../branches/test-branch ». SVN se plaint que le tronc doit être à la révision 15. Je fais un « svn update » et la structure du répertoire ressemble à ceci:

project 
+ trunk (15) 
+ branches 
    + test-branch (15) 

Cool! Prêt à réintégrer. J'essaye le "svn merge --reintegrate svn+ssh://.../branches/test-branch" encore. Maintenant SVN se plaint que j'ai besoin de fusionner tous les changements de tronc dans la branche avant de réintégrer. Le tronc est à 15 et mais la branche de test a seulement fusionné à 14.

Comment puis-je résoudre ce problème? Si je fusionne dans la branche et que je m'engage, la branche sera à 16. J'ai essayé d'utiliser "svn switch" sur le tronc, mais j'ai les mêmes erreurs.

La raison pour laquelle le dépôt est à 14 est parce que je continue de scier entre les fusions de tronc et de branche de test. Une définition de la folie est de répéter le même processus et d'attendre un résultat différent :-).

Merci.

Répondre

3

Il semble que vous ayez une caisse au-dessus des branches et des étiquettes, c'est ainsi que vous êtes supposé travailler.

Pour résoudre ce problème assurez-vous que vous avez une seule copie de travail du juste tronc:

svn co <server>/svn/repos/trunk 

Si vous voulez créer une branche, vous devez faire une copie côté serveur (sinon ça va faire une copie de votre copie de travail à cette branche, vous ne voulez pas que):

svn copy <server>/svn/repos/trunk <server>/svn/repos/branches/test-branch 

maintenant, vous pouvez changer votre copie de travail pour faire des travaux sur la branche:

svn switch <server>/svn/repos/branches/test-branch 

Vous pouvez maintenant soit fusionner les modifications de la branche vers le tronc, soit réintégrer la branche. Après le retour, vous devez supprimer la branche (la commande est destinée à être exécutée une fois, à la fin de la branche, voir svnbook pour plus d'info)

Pour ce faire, passez d'abord le tronc:

svn switch <server>/svn/repos/trunk 

et puis soit faire une révision:

svn merge -c <revnumber> ^/branches/test-branch 

ou réintégrer la branche:

svn merge --reintegrate ^/branches/test-branch 
svn delete <repos>/svn/repos/branches/test-branch -m "Delete branch"