On Sat, Dec 7, 2013 at 11:00 AM, Bert Huijben <bert_at_qqmail.nl> wrote:
>
>
> > -----Original Message-----
> > From: stefan2_at_apache.org [mailto:stefan2_at_apache.org]
> > Sent: zaterdag 7 december 2013 10:31
> > To: commits_at_subversion.apache.org
> > Subject: svn commit: r1548823 - in
> > /subversion/trunk/subversion/libsvn_fs_x: dag.c id.c id.h
> temp_serializer.c
> > temp_serializer.h
> >
> > Author: stefan2
> > Date: Sat Dec 7 09:30:42 2013
> > New Revision: 1548823
> >
> > URL: http://svn.apache.org/r1548823
> > Log:
> > Add a pool member to the internal representation of FSX IDs and
> > thus allow the ID vtable functions to perform actual data lookups
> > in the future. The pool is the one used to allocate the ID.
>
> With WC-NG we explicitly stopped adding a pool in this kind of structures
> for very good reasons. All these pool reference makes it harder and harder
> to properly allocate results. This pattern is far too sensitive to pool
> cleanup ordering problems
>
> Using proper result and scratch pool (where the scratch pool is always the
> result pool or a descendant of the result pool or at least a pool that is
> cleaned up *before* the result pool), makes pool cleanup handling much
> easier to understand...
>
Duly noted for Subversion 2.0
For now, however, we have to implement id_vtable_t. It offers two
functions, the first one being an identity check is certainly o.k.
The second one tests the following: "does this noderev(*) ID have a
common ancestor with that other noderev ID?". Unless you somehow
attach that information to the ID itself, you probably need a pool to
perform some kind of data access. But the API does not provide one.
> This is a first step towards making FSX IDs leaner and smarter.
>
> I would have assumed that an ID is constant... How can a constant value be
> smart?
>
> It can be chosen smartly, but an id is an identifier not code.
>
See above.
I'm trying to make the FSX IDs true IDs with no redundant data
on them and to separate their internal representation from the API.
-- Stefan^2.
(*) Noderevs are the FSFS equivalent of what svn_fs_id_t represents.
The actual FS backend may use a different underlying concept but
must still provide noderev-esque semantics through the vtable.
Received on 2013-12-08 11:10:22 CET