2009-01-08 6 views
117

En utilisant TortoiseSVN, j'ai besoin de prendre les modifications que j'ai faites dans une branche, puis de les fusionner avec Trunk. Je suis le seul développeur sur ce projet, donc je sais que le tronc n'a pas changé. J'apprends SVN afin que mon équipe puisse éventuellement l'utiliser.Utiliser TortoiseSVN pour fusionner les changements de branche avec le tronc

Fondamentalement, je veux ma malle regarder exactement comme la branche.

Dans le monde pre-svn, je copiais simplement les fichiers dans mon dossier de branche, supprimais les fichiers dans le dossier de joncteur réseau, puis copiais la branche dans le joncteur réseau. Dans TortoiseSVN, j'ai essayé "Réintégrer une branche", "Fusionner une gamme de révisions" et "Fusionner deux arbres différents". Rien ne semble changer réellement le coffre. J'ai aussi essayé de ramifier sur le tronc. Cela me donne une erreur, en disant que le coffre existe déjà. À ce stade, je ne fais qu'ignorer le fait d'écraser le bouton en espérant que quelque chose fonctionne.

Répondre

155

Dans votre cas.

  1. Passer la copie de travail à le tronc (SVN Switch)
  2. fusionner la branche dans la copie de travail (SVN Merge)
  3. Assurez-vous que tout compile et travaille
  4. Engagez la copie de travail (le tronc)
  5. considèrent que tuer la branche

Dans un environnement d'équipe Je suggère que vous devez d'abord fusionner les dernières modifications du tronc dans votre branche, assurez-vous que tout compile et fonctionne, puis effectuez les étapes ci-dessus (qui sera trivial puisque vous avez déjà testé les modifications).


Mise à jour

À l'étape 5, je mentionne tuer la branche. En effet, une fois qu'une branche d'une entité se trouve dans le tronc, elle doit être considérée comme faisant partie du tronc. Dans ce cas, la branche devrait être tuée pour 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 maintenance et release, sauf si une version particulière n'est plus supportée.Quoi qu'il en soit, vous avez toujours accès à toutes les révisions. Ainsi, tuer une branche est uniquement utilisé pour empêcher les autres développeurs de se développer sur une branche morte.

+3

Ceci est la meilleure réponse jusqu'à présent, mais il pourrait être un peu plus précis: 1. Commutateur de copie de travail à trunk (commutateur SVN), 2. Fusionner la branche dans la copie de travail (fusion SVN), 3. Compiler le travail copie, 4. Validez la copie de travail (validation SVN). ... –

+0

Merci, j'ai fait ça et ça a marché comme je le voulais. J'ai également été capable de marquer le code avec ces mêmes étapes. À l'étape 5, quelles sont les raisons de l'élimination de la branche? Est-ce pour économiser de l'espace? –

+0

fait et fait, merci pour les commentaires – mbillard

6

Mettez d'abord votre copie de travail du tronc. Effectuez ensuite une plage de fusion des révisions, de la branche au tronc. Une fois que cette boîte de dialogue est terminé, les différences seront dans l'attente des changements 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 typique de garder le tronc en marche et de faire tourner les branches au moment de la construction. Donc, la seule fusion que j'ai jamais besoin de faire est d'obtenir une correction de bug sur le tronc et le mettre sur la dernière branche de construction et relibération cette branche. La meilleure façon pour moi de faire, depuis que vous avez trouvé la fusion est maladroit au mieux. Est de garder la dernière branche et le tronc vérifié ma machine, et de copier littéralement les fichiers du tronc vers la branche et vérifier à la fois dans

+2

Il faut faire très attention à "copier" les fichiers. Utilisez quelque chose comme l'export de TortoiseSVN afin d'éviter de corrompre les répertoires svn cachés. – Milimetric

10

Je pense que dans TortoiseSVN 1.8.5, Fusionner | Fusionner deux arbres différents devrait fonctionner. Lorsque vous fusionnez une branche/tag vers le tronc, l'astuce est que l'URL De est le tronc et que le To est le tag/branche. Bizarre mais vrai.

Source: Merging

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

+2

Il m'a fallu un moment pour comprendre que To et From sont contre-intuitifs :) –

+0

Après avoir suivi les instructions sur le site de tortoisesvn, assurez-vous après la fusion, que vous commettez le tronc sans rien modifier. J'ai essayé de décocher certaines choses que je ne voulais pas commettre et qui provoquaient un avertissement de commit non récursif. En outre, pensez à supprimer la branche comme le disent les instructions. –

2

J'utilise TortoiseSVN 1.9.3, construire 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 réseau et sélectionnez l'option ci-dessous.

enter image description here

2) Dans le cas de la branche Fusion en sélectionnez l'option de tronc secondes comme indiqué ci-dessous et cliquez sur suivant

enter image description here

3) Dans le champ De: entrez l'URL complète du dossier de la tronc. Cela peut sembler incorrect, mais souvenez-vous que le tronc est le point de départ auquel vous voulez ajouter les changements de branche. Dans le champ À: entrez l'URL complète du dossier de la branche d'entités.

enter image description here

4) Cliquez sur Suivant et faire le test de fusion

enter image description here

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

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

+0

Je ne suis toujours pas convaincu pourquoi TO et FROM sont échangés, pourriez-vous l'expliquer plus? BTW merci c'était la meilleure réponse – behzad

Questions connexes