On Tue, Jan 06, 2015 at 01:12:24PM -0000, stef...@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));