Fusionner deux révisions de branche à l'aide de Subversion

95

Je voudrais fusionner tous les changements qui ont eu lieu entre la version 10 et la révision HEAD sur http: // url-of-branch-a et les appliquer à http: // url-of-branch-b .

Quelque chose comme...

svn merge -r 10:HEAD http://url-of-branch-a 

Est-ce possible? Si oui, quelle est la syntaxe?

J'exécute le client SVN à partir de la ligne de commande unix. La version du client SVN est la 1.4

EDIT: Oui, ma solution spécifique était ...

  1. changez de répertoire à l'emplacement de ma copie de travail qui souhaite recevoir les modifications (branche-b)
  2. svn merge -r 10: HEAD http: // url-of-branch-a

Ceci fusionne les changements de 'branch-a' dans 'branch-b'

user62732
la source
4
Vous devez également savoir quand la branche a été prise. Vous pouvez le faire (svn log --stop-on-copy.) Dans votre branche pour obtenir le numéro de révision à partir duquel vous avez créé une branche.
jmc
@jmc vous n'en avez plus besoin depuis l'année 2008, lorsque SVN 1.5 est sorti, AFAIR
bahrep

Réponses:

55

URL de retrait A. Utilisez la fusion SVN pour fusionner l'URL B avec votre copie de travail de A. Valider A.

Ou vice versa bien sûr :)

Billy ONeal
la source
127

Le processus est le suivant:

  1. Créer une copie de travail de la branche B ( svn checkout http://branch-b)
  2. Fusionner les modifications de la branche A dans la copie de travail de B ( svn merge -r 10:HEAD http://branch-a .)
  3. Commit (après résolution des conflits) la copie de travail B dans la branche b ( svn commit)

Consultez la page de manuel (fichier d'aide) pour la sémantique svn merge. Cela vous montre que svn merge vide toujours les résultats dans une copie de travail.

Consultez le SVNBook pour tous les détails.

Jamie Hale
la source
Pourriez-vous également donner une idée comment le faire en utilisant le plugin SVN dans eclipse?
Snehal Masne
Cela fonctionne pour moi: svn merge --force --allow-mixed-revisions -r 10: HEAD branch-a
Minh Nguyen
2
pourquoi spécifions-nous la révision 10 à HEAD? Pourquoi deux points de terminaison de révision au lieu d'une seule révision à utiliser comme instantané? à quelle branche "10 to HEAD" se réfère-t-il?
ahnbizcad
2

Surtout confondre mergeen essayant de faire dans svn repo, nous ne pouvons pas fusionner directement avec svn repo, nous pouvons fusionner avec une copie de travail de la machine locale comme suit:

  • Cette copie de travail doit être destination URLde fusion (c'est-à-dire la destination de paiement).

  • fusionner la copie de travail avec source URLde la fusion.

  • commit à destination.

Meilleure pratique : fusion, fusion.

Premraj
la source