A consequence of this thread is r1141699, which documents the "All
revisions must have rows" rule and enforces it at database read time.
Daniel Shahaf wrote on Thu, Jun 30, 2011 at 22:48:27 +0300:
> Philip Martin wrote on Thu, Jun 30, 2011 at 20:07:45 +0100:
> > Daniel Shahaf <danielsh_at_elego.de> writes:
> >
> > > Philip Martin wrote on Thu, Jun 30, 2011 at 19:48:25 +0100:
> > >> for i in $(seq 0 $(svnlook youngest repo)) ; do
> > >> sqlite3 repo/db/revprops/revprops.db "insert into revprop values ($i, '()'"
> > >> done
> > >>
> > >
> > >>From recover_body():
> > >
> > > /* No file? Hrm... maybe that's because this repository is
> > > packed and the youngest revision is in the revprops.db
> > > file? We can at least see if that's a possibility.
> > >
> > > ### TODO: Could we check for revprops in the revprops.db?
> > > ### What if rNNN legitimately has no revprops? */
> > >
> > >
> > > Your excerpt implies the answer to the first ###'d question is "Yes"
> > > (via looking for an empty skel), doesn't it?
> >
> > I don't understand your question. The properties column is "NOT NULL"
> > so must have some value. Are you saying we don't need rows? I guess my
> > use of youngest is wrong, it should stop at the last packed rev. I
> > haven't actually run that script, I just wrote it in my email client :)
>
> On IRC we agree that revprops.db is expected to have a row for *every*
> revision less than MIN_UNPACKED_REV; that row may map the revision to an
> empty proplist skel but it must exist.
>
> We might want to tolerate missing table lines (with a warning), both in
> 'recover' and elsewhere in the code. Still need to investigate here.
>
> >
> > --
> > Philip
Received on 2011-06-30 22:22:43 CEST