Hi,
I’m using p42svn to convert a Perforce repository into a Subversion repository. 
I’m using that chance to filter out some accidentally submitted files, for 
example the Library directory of our Unity project.

I am using svndumpfilter from subversion-1.9.1 with a bunch of exclude prefixes.

The filter seems to complete fine, though I’m getting an assert at the end of 
the run:
lt-svndumpfilter: subversion/libsvn_subr/path.c:429: svn_path_compare_paths: 
Assertion `is_canonical(path1, path1_len)' failed.

The offending path seems to be:
path1: /trunk/Unity/Library/metadata/8a/
(which is not canonical based on the definition in the source code)

Stack trace is:
(gdb) bt
#0  0x00007f95a401c107 in __GI_raise (sig=sig@entry=6) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007f95a401d4e8 in __GI_abort () at abort.c:89
#2  0x00007f95a4015226 in __assert_fail_base (fmt=0x7f95a414bce8 "%s%s%s:%u: 
%s%sAssertion `%s' failed.\n%n", 
    assertion=assertion@entry=0x7f95a57dd928 "is_canonical(path1, path1_len)", 
file=file@entry=0x7f95a57dd734 "subversion/libsvn_subr/path.c", 
line=line@entry=429, 
    function=function@entry=0x7f95a57dda10 <__PRETTY_FUNCTION__.7836> 
"svn_path_compare_paths") at assert.c:92
#3  0x00007f95a40152d2 in __GI___assert_fail 
(assertion=assertion@entry=0x7f95a57dd928 "is_canonical(path1, path1_len)", 
    file=file@entry=0x7f95a57dd734 "subversion/libsvn_subr/path.c", 
line=line@entry=429, function=function@entry=0x7f95a57dda10 
<__PRETTY_FUNCTION__.7836> "svn_path_compare_paths")
    at assert.c:101
#4  0x00007f95a57b588a in svn_path_compare_paths (path1=0x10dcc58 
"/trunk/Unity/Library/metadata/8a/", 
    path2=0x10f1ba8 
"/trunk/Unity/Library/metadata/fe/fe182cf4ad9426b4d9098d36401e7970") at 
subversion/libsvn_subr/path.c:429
#5  0x00007f95a401de51 in msort_with_tmp (p=0x7ffcf63b84e0, b=0x111a5a0, n=2) 
at msort.c:83
… more msort...
#26 0x00007f95a401e0fc in msort_with_tmp (n=2036, b=0x111a558, 
p=0x7ffcf63b84e0) at msort.c:45
#27 __GI_qsort_r (b=0x111a558, n=2036, s=8, cmp=0x7f95a57bae90 
<svn_sort_compare_paths>, arg=<optimized out>) at msort.c:297
#28 0x0000000000403abf in do_filter (baton=0x10b4248, do_exclude=17907760, 
pool=0x0, os=<optimized out>) at subversion/svndumpfilter/svndumpfilter.c:1282
#29 0x00000000004027c5 in sub_main (pool=0x109d0b8, argv=<optimized out>, 
argc=<optimized out>, exit_code=<synthetic pointer>) at 
subversion/svndumpfilter/svndumpfilter.c:1581
#30 main (argc=<optimized out>, argv=<optimized out>) at 
subversion/svndumpfilter/svndumpfilter.c:1615

I had a look at the svndump file from p42svn, and the node path for the 
directory is written as:
Node-path: trunk/Unity/Library/metadata/8a/
Node-kind: dir
Node-action: add
Prop-content-length: 10
Content-length: 10

So the question is: Should p42svn remove the trailing slash for directory 
nodes, or is this something that svndumpfilter should handle? I had a look at 
the svn dump of an existing repository, and it does not have trailing slashes.

Cheers,
Jens

Reply via email to