[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

FS abstraction levels

From: Greg Hudson <ghudson_at_MIT.EDU>
Date: 2004-03-31 07:57:22 CEST

I have developed a twelve-step plan for implementing the FS-backed FS,
but I think I should slow down and worry about the abstraction issues
first. So:

In another thread, Branko asked:
> Can someone refresh my memory as to why we'd need two abstraction
> layers? I've been out of town for a while...

CMike wrote (not in direct reply):
> There has been some dispute over the necessity of [abstracting at
> the libsvn_fs level]. I understand Glenn's defense of that
> position, but think we need a few more knowledgable heads in the
> circle before making that call.

I'd like to generate consensus that:

  * It's necessary to abstract at the libsvn_fs API level for my
    project.

  * It's desirable to abstract the current BDB implementation at the
    storage level for future projects. (Perhaps this should wait
    until someone is actively interested in instantiating a second
    database-backed FS implementation, but I have no objections if it
    doesn't wait.)

  * These two abstractions are orthogonal, and the storage abstraction
    has no bearing on my project.

  * Documenting the FS schema as Branko suggests has bearing on the
    second abstraction, but not so much on the first. (Which is not
    to suggest that I want to depart from the general FS concepts,
    like nodes and node-copies and node-revs, but I think we already
    have those adequately documented in libsvn_fs/structure, mixed in
    with their representation. It's possible that I'm unclear on the
    meaning of "schema" as he's using it.)

My reasoning is that the storage abstraction assumes an underlying
representation which can (a) efficiently support many small
associations, and (b) support transactions. If you have underlying
representation with these qualities, then there is no point in
duplicating the code which maps FS concepts onto DB associations, but
if you don't have those qualities, you'll want a representation with
mostly or totally different algorithms.

Earlier, CMike wrote:
> I'll gladly wrangle libsvn_fs into the necessary state to allow for
> pluggable backends.

Does this extend to working on the top-level abstraction, assuming we
do that, or should I treat that as a separate change?

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Mar 31 07:57:44 2004

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.