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;

Reply via email to