The relative path '.' is passed to is_canonical causing an assertion
failure in is_canonical when trying to sort the conflicts.

The minimal path to reproduce requires a conflict of at least 2 items.  One
of the conflicts should be '.'.


Steps to reproduce:
# create and checkout a repo
svnadmin create /tmp/test_repo
svn co file:///tmp/test_repo test_checkout
cd test_checkout

# stage the conflicts
## stage the skeleton
svn mkdir trunk branches
svn ci -m 'seed directories'
svn cp trunk branches/a
svn ci -m 'create branch a'
## stage changes in trunk
echo "foo" > trunk/foo
svn add trunk/foo
svn propset svn:ignore foo trunk
svn ci -m 'stage trunk'
## stage conflicting changes in branches/a
echo "bar" > branches/a/foo
svn add branches/a/foo
svn propset svn:ignore bar branches/a
svn ci -m 'stage branches/a'
## merge
svn up
cd branches/a
svn merge ^/trunk


Failure message:
$ svn merge ^/trunk
--- Merging r2 through r6 into '.':
   C foo
 C   .
--- Recording mergeinfo for merge of r2 through r6 into '.':
 U  .
svn: ../subversion/libsvn_subr/path.c:426: svn_path_compare_paths:
Assertion `is_canonical(path1, path1_len)` failed.

Reply via email to