On Sun, 2005-10-23 at 19:34 +0200, T'aZ wrote:
> On Sun, 23 Oct 2005 18:50:57 +0200
> Miha Vitorovic <mvitorovic@nil.si> wrote:
>
> > > the vector of trees is not stored as complete copies in the repository,
> > > it's encoded as a series of "deltas"
> > > so when you use the FSFS or the BDB backend, you have to read/adjust
> > > O(log(n)) deltas (according to svn/trunk/notes/skip-deltas )
> > > so this is *not* done in constant time, right ?
> >
> > Not as I understand it. To recreate the contents of a given revision, sure
> > you need to go through all the diffs, to get it. But to create a copy of a
> > given tree at revision X, all you need to do is "create copy of a tree at
> > revision X", that is you create a new reference to the data, without
> > actually copying or recreating that data. That will be done, when somebody
> > tries to read the contents of this copy. I guess in the context of a *nix
> > FS, this would be like a hard link to a directory.
>
> yes, only a new reference must be created pointing to the data , but since this new reference adds a new revision, it must be encoded as a delta against a previous one (in the fsfs case) or some deltas must be recreated (in the bdb case)
> no ?
No.
A copy does not actually copy anything.
You only need to say "This new dir has the contents of <revision x, dir
y>"
No actual representation is necessary for the new dir, becuause
<revision x, dir y>, will never change.
If you go look at what fsfs does when you create a copy, you'll see that
it is just going to create 4 lines in a revision file, specifying
exactly this information.
--Dan
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Sun Oct 23 23:02:04 2005