Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Merge a Branch into Trunk

I'm facing a peculiar problem with SVN merge. I want to merge from a dev branch to trunk. We have multiple dev branches cut off the trunk at the same time.

I'm merging one of those branches to trunk with this command:

svn merge trunk branch_1

I see changes that are not part of this branch, getting merged into trunk. What am I doing wrong ?

SVN Version :

Subversion command-line client, version 1.6.16-SlikSvn-tag-1.6.16@1076804-WIN32.

like image 366
Vanchinathan Chandrasekaran Avatar asked Sep 27 '11 02:09

Vanchinathan Chandrasekaran


People also ask

What is a sync merge?

Basically that means a temporary clone of the (feature) branch is created, a sync merge is made from the parent branch to the temporary branch, and finally the parent branch is replaced by the temporary branch. In other words, the temporary branch contains all changes made to the (feature) branch and parent branch.


4 Answers

Your svn merge syntax is wrong.

You want to checkout a working copy of trunk and then use the svn merge --reintegrate option:

$ pwd
/home/user/project-trunk

$ svn update  # (make sure the working copy is up to date)
At revision <N>.

$ svn merge --reintegrate ^/project/branches/branch_1
--- Merging differences between repository URLs into '.':
U    foo.c
U    bar.c
 U   .

$ # build, test, verify, ...

$ svn commit -m "Merge branch_1 back into trunk!"
Sending        .
Sending        foo.c
Sending        bar.c
Transmitting file data ..
Committed revision <N+1>.

See the SVN book chapter on merging for more details.


Note that at the time it was written, this was the right answer (and was accepted), but things have moved on. See the answer of topek, and http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate

like image 198
blahdiblah Avatar answered Oct 19 '22 05:10

blahdiblah


If your working directory points to the trunk, then you should be able to merge your branch with:

svn merge https://HOST/repository/branches/branch_1

be sure to be to issue this command in the root directory of your trunk

like image 29
topek Avatar answered Oct 19 '22 03:10

topek


Do an svn update in the trunk, note the revision number.

From the trunk:

svn merge -r<revision where branch was cut>:<revision of trunk> svn://path/to/branch/branchName

You can check where the branch was cut from the trunk by doing an svn log

svn log --stop-on-copy
like image 22
Mike K. Avatar answered Oct 19 '22 04:10

Mike K.


The syntax is wrong, it should instead be

svn merge <what(the range)> <from(your dev branch)> <to(trunk/trunk local copy)>
like image 45
engineer Avatar answered Oct 19 '22 03:10

engineer