120 votes

Fusionner la branche avec le tronc

En utilisant TortoiseSVN, je dois prendre les changements que j'ai fait dans une branche et ensuite les fusionner avec le tronc.

Je suis le seul développeur sur ce projet, donc je sais que le trunk n'a pas changé. J'apprends SVN pour que mon équipe puisse éventuellement l'utiliser.

En gros, je veux que mon tronc ressemble exactement à la branche.

Dans le monde pré-svn, j'aurais simplement copié les fichiers dans mon dossier de branche, supprimé les fichiers dans le dossier de tronc, puis copié la branche dans le tronc.

Dans TortoiseSVN, j'ai essayé Reintegrate a branch , Merge a range of revisions y Merge two different trees . Rien ne semble changer réellement le tronc. J'ai également essayé de créer des branches au-dessus du tronc. Cela me donne une erreur, disant que le tronc existe déjà.

158voto

mbillard Points 15829

Dans votre cas :

  1. Basculer la copie de travail vers le tronc (SVN Switch)
  2. Fusionner la branche dans la copie de travail (SVN Merge)
  3. Assurez-vous que tout compile et fonctionne toujours
  4. Livrer la copie de travail (le tronc)
  5. Envisagez de tuer la branche

Dans un environnement d'équipe Je vous suggère de commencer par fusionner les dernières modifications du tronc dans votre branche, de vous assurer que tout compile et fonctionne, puis de faire les étapes ci-dessus (qui seront triviales puisque vous avez déjà testé les modifications).


Mise à jour

A l'étape 5, je mentionne de tuer la branche. C'est parce qu'une fois qu'une branche d'une fonctionnalité est dans le tronc, elle doit être considérée comme faisant partie du tronc. Dans ce cas, la branche doit être tuée afin que personne ne continue à travailler dessus. Si des modifications majeures sont nécessaires pour cette fonctionnalité, vous devez créer une nouvelle branche pour cela.

Les seules branches que je ne tue pas sont les branches de maintenance et de version, à moins qu'une version particulière ne soit plus supportée.

Quoi qu'il en soit, vous avez toujours accès à toutes les révisions, donc tuer une branche n'est utilisé que pour empêcher d'autres développeurs de développer sur une branche morte.

0 votes

Le commentaire que vous avez ajouté sous l'étape 5 pourrait probablement mieux être l'étape 1 ? Lorsque vous voulez utiliser "Réintégrer une branche" à partir de la boîte de dialogue Fusion de TortoiseSVN, fusionner tous les changements du tronc (ou de la branche de base) en premier est une exigence.

1 votes

La première étape (basculer la copie de travail vers le tronc) n'est-elle nécessaire que si l'on n'a pas de copie de travail séparée pour la branche et le tronc ?

1 votes

Je pense qu'un détail important qui manque ici est le dossier sur lequel vous cliquez pour chaque étape, afin de connaître le contexte de chaque étape.

11voto

Kevin Johnsrude Points 140

Je pense que dans TortoiseSVN 1.8.5, Fusionner | Fusionner deux arbres différents devrait fonctionner. Lorsque vous fusionnez une branche/étiquette vers le tronc, le truc est que l'URL de départ est le tronc et l'URL d'arrivée est l'étiquette/branche. Bizarre mais vrai.

Source : Fusionner

Pour les répertoires qui ne sont pas dans votre copie de travail mais qui sont dans le tag/branche, vous pouvez obtenir des erreurs de conflit. Acceptez simplement le conflit et refaites la fusion.

0 votes

Après avoir suivi les instructions sur le site tortoisesvn, assurez-vous qu'après la fusion, vous commitez le tronc sans rien modifier. J'ai essayé de décocher quelques choses que je ne voulais pas commiter, ce qui provoquait des avertissements de commit non-récursif. Aussi, pensez à supprimer la branche comme le disent les instructions.

6voto

DevelopingChris Points 12510

Commencez par transférer votre copie de travail vers le tronc. Ensuite, faites une plage de fusion des révisions, de la branche vers le tronc. Une fois ce dialogue terminé, les différences seront des changements en attente dans votre copie de travail du tronc. Vous devrez les livrer comme si vous aviez fait les changements manuellement sur votre copie de travail.

Dans mon cas, il est plus typique de garder le tronc actif et de créer des branches au moment de la construction. Ainsi, la seule fusion que j'ai besoin de faire est de sortir un correctif de bogue du tronc, de le mettre sur la dernière branche de construction et de re-livrer cette branche. La façon la plus simple pour moi de le faire, puisque comme vous l'avez constaté la fusion est maladroite au mieux. C'est de garder la dernière branche et le tronc en check out sur ma machine, et de copier littéralement les fichiers du tronc vers la branche et de les enregistrer tous les deux.

2 votes

Beaucoup de précautions doivent être prises avec la "copie" des fichiers. Utilisez quelque chose comme l'exportation de TortoiseSVN afin d'éviter de corrompre les répertoires svn cachés.

4voto

J'utilise TortoiseSVN 1.9.3, Build 27038.

Suivez les étapes ci-dessous afin de fusionner la branche avec le tronc.

1) Faites un clic droit sur la copie de travail du tronc et sélectionnez l'option ci-dessous.

enter image description here

2) Dans le cas d'une fusion de branches dans un tronc, sélectionnez la deuxième option comme indiqué ci-dessous et cliquez sur suivant.

enter image description here

3) Dans le champ "From :", entrez l'URL complète du dossier du coffre. Cela peut sembler faux, mais rappelez-vous que le tronc est le point de départ auquel vous voulez ajouter les modifications de la branche. Dans le champ To :, entrez l'URL complète du dossier de la branche de fonctionnalité.

enter image description here

4) Cliquez sur suivant et effectuez le test de fusion.

enter image description here

5) Si le test de fusion est réussi, cliquez sur le bouton Fusionner.

6) Une fois que la fusion est réussie, commettez les changements sur le tronc.

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