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

Re: r1578670 - Fix the order of node record headers written by svndumpfilter

From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Mon, 14 Apr 2014 11:29:10 +0100 (BST)

Hi Philip,

This commit changes the output format of paths from no leading slash ('relpath' style) to having a leading slash ('fspath' style). This seems to be against the desired path format for a dump file, although the documentation in <notes/dump-load-format.txt> is not explicit.

I noticed this because it crashes  'svnrdump load':

$ svnrdump load file://$PWD/rr < the-dump-filtered
lt-svnrdump: subversion/libsvn_subr/dirent_uri.c:1256: svn_relpath_dirname: Assertion `relpath_is_canonical(relpath)' failed.
Aborted (core dumped)

That's probably a bug in itself; 'svnadmin load' accepts them.

The code should probably use the path as it was read from the input stream, so as not to make unnecessary changes to the data. (However, preserving the exact input for this particular header is a drop in the ocean, as svndumpfilter also makes many other other unnecessary changes such as reordering headers and adding redundant headers, and I think it would be better if it did not, but that's another story.)

- Julian

> Author: philip
> URL: http://svn.apache.org/r1578670
> Log:
> Fix the order of node record headers written by svndumpfilter.
>
> * subversion/svndumpfilter/svndumpfilter.c
>   (new_node_record): Output 'Node-path' first.
>
> Modified: subversion/trunk/subversion/svndumpfilter/svndumpfilter.c
> ==============================================================================
> +      /* A node record is required to begin with 'Node-path'. */
> +      SVN_ERR(svn_stream_printf(nb->rb->pb->out_stream,
> +                                pool, "%s: %s\n",
> +                                SVN_REPOS_DUMPFILE_NODE_PATH, node_path));
> +
>        for (hi = apr_hash_first(pool, headers); hi; hi = apr_hash_next(hi))
>          {
>            const char *key = svn__apr_hash_index_key(hi);
> @@ -638,7 +643,8 @@ new_node_record(void **node_baton,
>
>            if ((!strcmp(key, SVN_REPOS_DUMPFILE_CONTENT_LENGTH))
>                || (!strcmp(key, SVN_REPOS_DUMPFILE_PROP_CONTENT_LENGTH))
> -              || (!strcmp(key, SVN_REPOS_DUMPFILE_TEXT_CONTENT_LENGTH)))
> +              || (!strcmp(key, SVN_REPOS_DUMPFILE_TEXT_CONTENT_LENGTH))
> +              || (!strcmp(key, SVN_REPOS_DUMPFILE_NODE_PATH)))
>              continue;
Received on 2014-04-14 12:29:47 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.