Jake Scruggs

writes ruby/wears crazy shirts

Every time I need to do this I try to use svn's --help which is only possible to decipher if you already know what to do. Then I spend too much time on the internet looking for the answer. And finally I break down and ask my tech lead. With much shame. I'm putting this up here so I least I'll know where to find it. Maybe you too.

In the directory of the branch:


svn merge -r 1001:1002 https://svn.dev.your/repo/trunk/src .

If you checked in some files in revision 1002, then what you're saying is that you only want the changes from that checkin with '-r 1001:1002' Which is followed by the url of the trunk (where the changes were checked in) and a '.' to say that you want to merge to the current directory. Use '--dry-run' if you want to see what would happen without actually screwing anything up. After the merge is successful, you now have some modified files in the branch you can check in.

Done and done.

9 comments:

Josh said...

Until SVN 1.5 is released (http://blogs.open.collab.net/svn/2007/10/subversion-15-m.html) you might want to use svnmerge.py (http://www.orcaware.com/svn/wiki/Svnmerge.py).

I'm not sure how I ever lived without a tool like this for managing branches.

JH said...

I've found that merging more than 10 revisions to be problematic for the merge process.

Here's a nugget if you are merging from a revision number to the current version:
svn merge -r 1001:HEAD https://svn.dev.your/repo/trunk/src .

Paul said...

You can also use a working copy instead of the URL, which can be easier:

svn merge -r 1001:1002 ../path/to/trunk .

elpelopodromo.com said...

exactly what i was looking for. fantastic!

Jeremy said...

I've gone back to this post over and over the past 6 months, so thanks!

Ravi said...

what if I need to pickup a couple of revisions at a time from the trunk and merge in the changes to my branch? Will this work:

svn merge -r 1001:1005 ../path/to/trunk .

thanks,
Ravi

abatishchev said...

Briliant!

Anonymous said...

It's 2012 now. Still done and done. Thanks.

Dave said...

Just what I needed — saved me a lot of pain.

Cheers Jake!