I ended up with a bad merge, that is, the merge committed but it did not contain the entire commit that was the source of the merge.

This happens when you do:

1) Add a file on a trunk.
2) Commit the file.
3) Run svnmerge.py on the branch.
4) Do a recursive revert: svn revert -R .
5) DO NOT delete the newly added file in the branch.
6) Re-run svnmerge.py to merge the same commit.

What will happen is that 'svn merge' will see the already existing file and not merge the addition to the branch. So when you go to commit, you get everything but that file added to the branch.

So I think that the current 'svn status' check for modifications isn't good enough, and that svnmerge.py should check for the existance of any files in the target of the merge before continuing.

See the script below which reproduces this.  You'll see this:

svn merge -r 4:5 file:///home/blair/tmp/repos/trunk .
Skipped 'file2'

Regards,
Blair


#!/bin/sh -x

rm -fr repos wc
svnadmin create repos
svn co file://`pwd`/repos wc
cd wc
svn mkdir trunk
touch trunk/file
svn add trunk/file
svn ci -m ''
svn mkdir branches
svn ci -m ''
svn cp trunk branches/b1
svn ci -m ''
cd branches/b1/
svnmerge -s -v -v init
svn ci -F svnmerge-commit-message.txt
cd ../../trunk/
touch file2
svn add file2
svn ci -m ''
cd ..
cd branches/
cd b1/
svnmerge  -s -v -v merge
svn revert -R .
svnmerge  -s -v -v merge
svn status
_______________________________________________
Svnmerge mailing list
[email protected]
http://www.orcaware.com/mailman/listinfo/svnmerge

Reply via email to