J'ai lu sur le branchement / fusion avec Subversion 1.5 en utilisant l'excellent livre gratuit Contrôle de version avec Subversion . Je pense que je comprends comment utiliser le client de ligne de commande Subversion pour effectuer les actions dont j'ai le plus souvent besoin, à savoir:
Mettre à jour la branche avec les modifications du tronc
À partir du répertoire de travail de la branche, exécutez:
svn merge http://svn.myurl.com/proj/trunk
Fusionner la branche dans le tronc
À partir du répertoire de travail du coffre, exécutez:
svn merge - réintégrer http://svn.myurl.com/proj/branches/mybranch
Cependant, nous utilisons TortoiseSVN 1.5 comme interface avec Subversion. J'aimerais savoir comment effectuer au mieux ces opérations avec TortoiseSVN. La nouvelle boîte de dialogue propose trois options différentes dans le menu principal.
- Fusionner une plage de révisions
- Réintégrer une succursale
- Fusionner deux arbres différents
D'après ce que je peux comprendre, TortoiseSVN exécute toujours svn avec la syntaxe suivante.
svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH
De plus, la réintégration d'une branche échoue souvent avec un message indiquant que certaines cibles n'ont pas été fusionnées et qu'elle ne peut donc pas continuer, et j'ai donc dû utiliser l'option n ° 3.
Mes questions sont:
- Comment utiliser TortoiseSVN 1.5 pour fusionner les modifications du tronc vers une branche?
- Comment utiliser TortoiseSVN 1.5 pour fusionner la branche avec le tronc, avec et sans la méthode de réintégration?
- Laquelle des options ci-dessus dois-je utiliser pour chacune et pourquoi?
ÉDITER
Grâce à des tests «à vide», j'ai constaté que l'opération Subversion en ligne de commande
svn merge http://svn.myurl.com/proj/trunk
est analogue à l'option # 1 (Fusionner une plage de révisions) dans TortoiseSVN, tant que je laisse la plage de révision vide.
la source
Réponses:
Le comportement dépend de la version de votre référentiel. Subversion 1.5 permet 4 types de fusion:
Subversion avant 1.5 n'autorisait que les 2 premiers formats.
Techniquement, vous pouvez effectuer toutes les fusions avec les deux premières méthodes, mais les deux dernières activent le suivi des fusions de subversion 1.5.
Les options de TortoiseSVN fusionnent une plage ou des révisions mappées à la méthode 3 lorsque votre référentiel est 1.5+ ou à la méthode un lorsque votre référentiel est plus ancien.
Lors de la fusion de fonctionnalités vers une branche de version / maintenance, vous devez utiliser la commande «Fusionner une plage de révisions».
Ce n'est que lorsque vous souhaitez fusionner toutes les fonctionnalités d'une branche avec une branche parente (généralement un tronc) que vous devriez envisager d'utiliser 'Réintégrer une branche'.
Et la dernière commande - Fusion de deux arbres différents - n'est utile que lorsque vous voulez sortir du comportement de branchement normal. (Par exemple, comparer différentes versions, puis fusionner la différence avec une autre branche)
la source
Je n'ai pas pu suivre correctement les autres réponses, voici plus un guide des nuls ...
Vous pouvez le faire dans les deux sens pour aller
trunk -> branch
oubranch -> trunk
. Je règle toujours d'abordtrunk -> branch
les conflits là-bas, puis je fusionnebranch -> trunk
.Fusionner le tronc dans une branche / étiquette
la source
trunk
etbranch
, alors en vous assurant de fusionner les modifications detrunk
àbranch
dès que possible, vous éviterez autant que possible les conflits. Cela signifie que lors de la fusionbranch
àtrunk
ne devrait pas y avoir de conflits.Vous devez utiliser "fusionner une plage de révision".
Pour fusionner les modifications du tronc vers une branche, dans la copie de travail de la branche, choisissez "fusionner la plage de révisions" et entrez l'URL du tronc et les révisions de début et de fin à fusionner.
La même chose dans le sens inverse pour fusionner une branche dans le tronc.
À propos de l'indicateur --reintegrate, consultez le manuel ici: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate
la source
Jetez un œil à svnmerge.py . C'est en ligne de commande, ne peut pas être invoqué par TortoiseSVN, mais c'est plus puissant. De la FAQ :
la source
Maj-clic droit sur le dossier et sélectionnez TortoiseSVN -> Fusionner tout
la source