[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

assert in svndumpfilter

From: Jens Christian Restemeier <jens.restemeier_at_gmail.com>
Date: Sun, 13 Sep 2015 19:13:53 +0100

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_at_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_at_entry=0x7f95a57dd928 "is_canonical(path1, path1_len)", file=file_at_entry=0x7f95a57dd734 "subversion/libsvn_subr/path.c", line=line_at_entry=429,
    function=function_at_entry=0x7f95a57dda10 <__PRETTY_FUNCTION__.7836> "svn_path_compare_paths") at assert.c:92
#3 0x00007f95a40152d2 in __GI___assert_fail (assertion=assertion_at_entry=0x7f95a57dd928 "is_canonical(path1, path1_len)",
    file=file_at_entry=0x7f95a57dd734 "subversion/libsvn_subr/path.c", line=line_at_entry=429, function=function_at_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
Received on 2015-09-13 22:01:35 CEST

This is an archived mail posted to the Subversion Users mailing list.