Suppose I have the following:
trunk/
|-+ d1/
| |-- bar.c
| \-- foo.c
\-+ d2/
\-- baz.txt
I do svn cp trunk branch, and commit.
Now, I do some cleanup in branch.
$ svn mkdir src
$ svn mv d1 src/
$ svn commit
$ edit src/d1/foo.c
$ svn commit
This leaves me with the following in branch
branch/
|-+ d2/
| \-- baz.txt
\-+ src/
\-+ d1/
|-- bar.c
\-- foo.c
Meanwhile, some changes have occurred in trunk (editing foo.c and bar.c).
Now, philosophically, I want branch‘s directory structure to be reflected in trunk, and I want the edits I’ve made to its files there too. But I also want the edits that happened in trunk while I was working. So I want to merge the contents of trunk/d1/foo.c and branch/src/d1/foo.c.
Merging in either direction (trunk to branch or branch to trunk) gives me a ton of tree conflicts. Is there a better way to proceed than running svn info on every conflict and resolving things carefully and manually?
This sounds like a candidate for “bunny hopping.”
http://designbygravity.wordpress.com/2009/10/19/what-mother-never-told-you-about-svn-branching-and-merging/