(I asked this question almost a month ago on the users list, but got no
response, so now I'm trying the developers list.)
I recently began using Subversion to track a project at the new company where I
work. We've been using it for a few weeks, and our database has just over 60
commits to it now.
I created a "release" branch of the project at revision 36, and have been doing
heavy development in the trunk, merging only the bug fixes into the branch. It
now looks like my trunk changes are fine, and I wanted to merge them into the
release branch, but that's where things went wrong. Most of the files were
fine, but one file missed a very large change!
In the branch, that file had a change at revision 62, and as mentioned above,
the branch was created in revision 36. In the trunk, that file was modified in
revisions 61, 59, 37, 23, and points earlier. The single merge of that file
into the branch was done with "svn merge -r61:62 <path>", run on the parent
directory. When I try to merge the trunk version of that file into the branch,
I get:
--- Merging r47 through r62 into '<filename>':
U <filename>
As you can see, it skips the change to the file made in revision 37!
Specifying "-r36:62" in the command line gives the same result. I'm not even
sure why it's mentioning revision 47, because the file wasn't changed then.
"svn propget svn:mergeinfo --depth infinity <branch file>" shows nothing, not
even the merge from "-r61:62".
In addition, I can't seem to produce an accurate dump to show others for
debugging purposes -- I try "svnadmin dump <repo> | svndumpfilter
--drop-empty-revs include <trunk path> <branch path> > repodump.txt", but the
only revision shown for the branch path is 62...there's no mention of the
creation of the branch back in revision 36, so reconstructing the database
fails -- the branch path never gets created. (And yes, I created all the
parent directories directly...I dug around the mailing-list archives and found
out that step was necessary for filtered dumps.)
There's another problem, which is that some files I deleted in the trunk showed
up in the merged branch as conflicts, but that's a separate problem, and at
least that problem drew attention to itself -- the bad merge I described above
had to be found by reading over all the changes one by one.
Does anyone have any idea what could have gone wrong? This seems like an
out-and-out bug in Subversion.
I'm running CollabNetSubversion-server-1.6.11-3.win32 on a machine running
Windows Server 2008, and CollabNetSubversion-client-1.6.11-3.win32 and
TortoiseSVN-1.6.8.19260-win32-svn-1.6.11 on a laptop running Windows Vista.
Most of my commits were done with TortoiseSVN, but all my merges were done with
the command-line client.
Thanks in advance for any insight into these problems! I'm trying to sell the
concept of version control (and open-source software) to a team with some
rather backwards development processes, and this glitch isn't helping my case.
Steven Boswell