136 votes

En utilisant TortoiseSVN, comment puis-je fusionner les changements du tronc vers une branche et vice versa ?

Je me suis documenté sur le branchement/la fusion avec Subversion 1.5 en utilisant l'excellent et libre logiciel Contrôle de version avec Subversion livre. Je pense que je comprends comment utiliser le client de ligne de commande de Subversion pour effectuer les actions dont j'ai besoin le plus souvent, qui sont :

Mise à jour de la branche avec les changements du tronc

Depuis le répertoire de travail de la branche, exécutez :

fusion svn http://svn.myurl.com/proj/trunk

Fusionner la branche dans le tronc

Depuis le répertoire de travail du tronc, exécutez :

svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch

Cependant, nous utilisons TortoiseSVN 1.5 comme interface avec Subversion. Je voudrais savoir comment effectuer au mieux ces opérations avec TortoiseSVN. Le nouveau dialogue fournit trois options différentes sur le menu principal.

  1. Fusionner une série de révisions
  2. Réintégrer une branche
  3. Fusionner deux arbres différents

De ce que je peux rassembler, 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 les suivantes :

  1. Comment puis-je utiliser TortoiseSVN 1.5 pour fusionner les changements du tronc vers une branche ?
  2. Comment puis-je utiliser TortoiseSVN 1.5 pour fusionner la branche vers le tronc, avec et sans la méthode de réintégration ?
  3. Laquelle des options ci-dessus dois-je utiliser pour chacune d'elles, et pourquoi ?

EDIT

Grâce à des essais à blanc, j'ai constaté que l'opération de Subversion en ligne de commande

fusion svn 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évisions vide.

0 votes

Les liens n'ont pas été trouvés ! =/

264voto

icc97 Points 1602

Je n'ai pas pu suivre correctement les autres réponses, voici plutôt un guide pour les nuls...

Vous pouvez le faire dans les deux sens pour aller trunk -> branch ou branch -> trunk . Je fais toujours d'abord trunk -> branch corrigez les conflits qui s'y trouvent, puis fusionnez branch -> trunk .

Fusionner le trunk dans une branche / tag

  1. Vérifier la branche / le tag
  2. Clic droit sur la racine de la branche | Tortoise SVN | Fusionner ...
  3. Type de fusion : Fusionner une série de révisions | Cliquez sur "Suivant". enter image description here
  4. Fusionner les plages de révision : Sélectionnez l'URL du répertoire trunk que vous avez copié dans la balise branch /. Entrez les révisions à fusionner ou laissez le champ vide pour fusionner toutes les révisions | cliquez sur 'Suivant'. enter image description here
  5. Options de fusion : Je les ai laissés par défaut et j'ai cliqué sur 'Fusionner'. enter image description here
  6. Cela va fusionner les révisions dans la branche / tag extraite.
  7. Ensuite, livrez les changements fusionnés à la branche / tag

4 votes

J'ai laissé de côté "Revision range to merge" et j'ai fait un "Test Merge". C'était ce dont j'avais besoin : l'intervalle était automatiquement défini pour moi (de la date de création de la branche à la dernière révision de la branche).

0 votes

Excellente réponse - concise et facile à suivre. Cela a fonctionné pour moi, mais lorsque je voulais simplement fusionner un seul fichier de configuration, pour une raison quelconque, j'ai dû le faire deux fois. C'est tout bon maintenant. Merci à

0 votes

@Lian J'ai fait la même chose pour fusionner du tronc vers la branche ; laissez l'intervalle de révision vide si vous voulez que la dernière version des fichiers du tronc soit fusionnée avec les fichiers de la branche.

28voto

Bert Huijben Points 13856

Le comportement dépend de la version de votre dépôt. Subversion 1.5 permet 4 types de fusion :

  1. fusionner sourceURL1[@N] sourceURL2[@M] [WCPATH]
  2. fusionner sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
  3. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [WCPATH]
  4. merge --reintegrate SOURCE[@REV] [WCPATH]

Subversion avant 1.5 ne permettait 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 pour fusionner une gamme de révisions correspondent à la méthode 3 lorsque votre référentiel est 1.5+ ou à la méthode 1 lorsque votre référentiel est plus ancien.

Lorsque vous fusionnez des fonctionnalités vers une branche de publication/maintenance, vous devez utiliser la commande "Fusionner une série de révisions".

Ce n'est que lorsque vous souhaitez fusionner toutes les fonctionnalités d'une branche vers une branche parente (généralement le tronc) que vous devez envisager d'utiliser la fonction "Réintégrer une branche".

Et la dernière commande -Fusionner deux arbres différents- n'est utile que lorsque vous voulez sortir du comportement normal de ramification. (Par exemple, comparer différentes versions et ensuite fusionner les différences dans une autre branche).

0 votes

Quelqu'un pourrait-il m'aider à stackoverflow.com/questions/51657636/ . C'est une question importante pour notre équipe, nous avons besoin d'idées à ce sujet.

13voto

Davide Gualano Points 5832

Vous devriez utiliser "fusionner une gamme de révision".

Pour fusionner les changements du tronc vers une branche, dans la copie de travail de la branche, choisissez "fusionner une 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'option --reintegrate, consultez le manuel ici : http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate

1voto

Liudvikas Bukys Points 3578

Jetez un coup d'œil à svnmerge.py . C'est une ligne de commande, elle ne peut pas être invoquée par TortoiseSVN, mais elle est plus puissante. Depuis le FAQ :

La subversion traditionnelle vous permet de fusionner les changements, mais il ne mais il ne se "souvient" pas de ce que vous avez déjà fusionné. Il ne fournit pas non plus un moyen pratique pratique pour exclure un ensemble de modifications svnmerge.py automatise une partie du travail et le simplifie. travail, et le simplifie. Svnmerge crée également un message de commit avec les messages de log de toutes les choses qu'il a fusionnées.

6 votes

Svnmerge.py a été développé sur Subversion 1.4 et antérieur. Subversion 1.5 a introduit le suivi des fusions dans le produit de base.

0voto

Denis Points 2122

Shift-Clic droit sur le dossier et sélectionnez TortoiseSVN -> Fusionner tout

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X