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