You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Stefan Sperling <st...@elego.de> on 2015/01/06 15:25:47 UTC
Re: svn commit: r1649797 -
/subversion/trunk/subversion/libsvn_fs_x/fs_x.c
On Tue, Jan 06, 2015 at 01:12:24PM -0000, stefan2@apache.org wrote:
> Author: stefan2
> Date: Tue Jan 6 13:12:23 2015
> New Revision: 1649797
>
> URL: http://svn.apache.org/r1649797
> Log:
> Simplify the r0 template in FSX. Because we treat directories with NULL
> text reps as empty (and do so efficiently), we can simply ommit the text
> rep for the root directory in r0. The remainder are simple strings that
> we can take length info from and that can be composed into r0.
>
> * subversion/libsvn_fs_x/fs_x.c
> (write_revision_zero): Omit /@0 text rep and compose r0 from strings.
> Derive offset info from string lengths.
>
> Modified:
> subversion/trunk/subversion/libsvn_fs_x/fs_x.c
>
THANK YOU! This is so much more readable :)
Is there a regression test which compares the result of this function
with a known template or copy of r0?
> Modified: subversion/trunk/subversion/libsvn_fs_x/fs_x.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/fs_x.c?rev=1649797&r1=1649796&r2=1649797&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs_x/fs_x.c (original)
> +++ subversion/trunk/subversion/libsvn_fs_x/fs_x.c Tue Jan 6 13:12:23 2015
> @@ -845,43 +845,31 @@ write_revision_zero(svn_fs_t *fs,
> svn_fs_x__revision_file_t *rev_file;
> const char *l2p_proto_index, *p2l_proto_index;
>
> - /* Write a skeleton r0 with no indexes. */
> - SVN_ERR(svn_io_file_create_binary
> - (path_revision_zero,
> - "DELTA\nSVN\1" /* txdelta v1 */
> - "\0\0\4\2\5" /* sview offset, sview len,
> - tview len, instr len, newlen */
> - "\1\x84" /* 1 instr byte, new 4 bytes */
> - "\4END\n" /* 4 new bytes, E, N, D, \n */
> - "ENDREP\n"
> - "id: 2+0\n"
> - "node: 0+0\n"
> - "copy: 0+0\n"
o> - "type: dir\n"
> - "count: 0\n"
> - "text: 0 3 16 4 "
> - "2d2977d1c96f487abe4a1e202dd03b4e\n"
> - "cpath: /\n"
> - "\n\n",
> - 0x87, subpool));
> + /* Construct a skeleton r0 with no indexes. */
> + svn_string_t *noderev_str = svn_string_create("id: 2+0\n"
> + "node: 0+0\n"
> + "copy: 0+0\n"
> + "type: dir\n"
> + "count: 0\n"
> + "cpath: /\n"
> + "\n",
> + subpool);
> + svn_string_t *changes_str = svn_string_create("\n",
> + subpool);
> + svn_string_t *r0 = svn_string_createf(subpool, "%s%s",
> + noderev_str->data,
> + changes_str->data);
> +
> + /* Write skeleton r0 to disk. */
> + SVN_ERR(svn_io_file_create(path_revision_zero, r0->data, subpool));
Re: svn commit: r1649797 - /subversion/trunk/subversion/libsvn_fs_x/fs_x.c
Posted by Stefan Fuhrmann <st...@wandisco.com>.
On Tue, Jan 6, 2015 at 3:25 PM, Stefan Sperling <st...@elego.de> wrote:
> On Tue, Jan 06, 2015 at 01:12:24PM -0000, stefan2@apache.org wrote:
> > Author: stefan2
> > Date: Tue Jan 6 13:12:23 2015
> > New Revision: 1649797
> >
> > URL: http://svn.apache.org/r1649797
> > Log:
> > Simplify the r0 template in FSX. Because we treat directories with NULL
> > text reps as empty (and do so efficiently), we can simply ommit the text
> > rep for the root directory in r0. The remainder are simple strings that
> > we can take length info from and that can be composed into r0.
> >
> > * subversion/libsvn_fs_x/fs_x.c
> > (write_revision_zero): Omit /@0 text rep and compose r0 from strings.
> > Derive offset info from string lengths.
> >
> > Modified:
> > subversion/trunk/subversion/libsvn_fs_x/fs_x.c
> >
>
> THANK YOU! This is so much more readable :)
>
You are welcome. The key here was that I could
simply omit the complicated part.
Is there a regression test which compares the result of this function
> with a known template or copy of r0?
>
Not for FSX - which makes sense because there
will be changes to noderev and changed path list
representation at some point this year.
For FSFS, there are a two tests that will fail due
to hard-coded expectations once you omit the
directory representation. If I succeed writing a
"complete" constructor for FSFS r0, I'll add a
regression test to make sure that old servers
will be presented with the same r0 contents as
always.
-- Stefan^2.