Fusionner la branche avec le tronc

119

En utilisant TortoiseSVN, je dois prendre les modifications que j'ai faites dans une branche, puis les fusionner avec le tronc.

Je suis le seul développeur sur ce projet, donc je sais que le tronc 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, je copierais simplement les fichiers dans mon dossier de branche, supprimerais les fichiers dans le dossier de coffre, puis copier la branche dans le coffre.

Dans TortoiseSVN, je l' ai essayé Reintegrate a branch, Merge a range of revisionset Merge two different trees. Rien ne semble réellement changer de tronc. J'ai aussi essayé de ramifier sur le tronc. Cela me donne une erreur en disant que le coffre existe déjà.

Brian Bolton
la source

Réponses:

157

Dans ton cas:

  1. Basculer la copie de travail vers le coffre (SVN Switch)
  2. Fusionner la branche dans la copie de travail (SVN Merge)
  3. Assurez-vous que tout se compile et fonctionne toujours
  4. Validez la copie de travail (le coffre)
  5. Pensez à tuer la branche

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


Mettre à jour

À l'étape 5, je mentionne le meurtre de la branche. En effet, une fois qu'une branche d'une fonction est dans le coffre, elle doit être considérée comme faisant partie du coffre. Dans ce cas, la branche doit être tuée pour que personne ne continue de 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 prise en charge.

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

mbillard
la source
Le commentaire que vous avez ajouté à l'étape 5 pourrait probablement mieux être l'étape 1? Lorsque vous souhaitez utiliser "Réintégrer une branche" à partir de la boîte de dialogue Fusionner TortoiseSVN, fusionner d'abord toutes les modifications du tronc (ou de la branche de base) est une exigence.
jbvo
1
La première étape (basculer la copie de travail vers le tronc) n'est-elle nécessaire que si vous ne disposez pas d'une copie de travail séparée de la branche et du tronc?
Jeff B
1
Je pense qu'un détail majeur qui manque ici est le dossier sur lequel vous cliquez pour chaque étape, de sorte que vous connaissez le contexte de chaque étape.
MacGyver
10

Je pense que dans TortoiseSVN 1.8.5, Merge | La fusion de deux arbres différents devrait fonctionner. Lorsque vous fusionnez une branche / balise avec le tronc, l'astuce est que l'URL De est le tronc et le À est la balise / branche. Bizarre mais vrai.

Source: fusion

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

Kevin Johnsrude
la source
Après avoir suivi les instructions sur le site tortoisesvn, assurez-vous qu'après la fusion, vous validez le coffre sans rien modifier. J'ai essayé de décocher certaines choses que je ne voulais pas commettre, ce qui provoquait un avertissement de validation non récursif. Pensez également à supprimer la branche comme le disent les instructions.
goku_da_master
6

Commencez par placer votre copie de travail dans le coffre. Ensuite, effectuez une fusion de séries de révisions, de la branche au tronc. Une fois cette boîte de dialogue terminée, les différences seront en attente de modifications dans votre copie de travail du tronc. Vous devrez les valider comme si vous aviez effectué manuellement les modifications sur votre copie de travail.

Dans mon utilisation, il est plus courant de garder le tronc en marche et de tourner les branches au moment des constructions. Donc, la seule fusion que j'ai jamais besoin de faire est d'obtenir un correctif de bogue dans le coffre et de le mettre sur la dernière branche de construction et de rééditer cette branche. Le moyen le plus simple pour moi de le faire, car comme vous l'avez trouvé, la fusion est au mieux maladroite. Est de garder la dernière branche et le tronc extraits sur ma machine, et de copier littéralement les fichiers de tronc en branche et de les archiver.

DévelopperChris
la source
2
Il faut faire très attention lors de la «copie» des fichiers. Utilisez quelque chose comme l'exportation de TortoiseSVN afin d'éviter de corrompre les répertoires svn cachés.
Milimetric
3

J'utilise TortoiseSVN 1.9.3, Build 27038.

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

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

entrez la description de l'image ici

2) En cas de fusion de branche dans le tronc, sélectionnez l'option en second lieu comme indiqué ci-dessous et cliquez sur Suivant

entrez la description de l'image ici

3) Dans le champ De: entrez l'URL du dossier complet de la ligne réseau. Cela peut sembler faux, mais rappelez-vous que le tronc est le point de départ auquel vous souhaitez ajouter les modifications de branche. Dans le champ À: entrez l'URL complète du dossier de la branche de fonctionnalité.

entrez la description de l'image ici

4) Cliquez sur suivant et effectuez le test de fusion

entrez la description de l'image ici

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

6) Une fois la fusion réussie, validez les modifications sur le tronc.

Waqas Ahmed
la source