On IRC, you wrote:
[1:49pm] ehu: gstein_: here? some more remarks regarding wc-ng.
[1:50pm] ehu: gstein_: in wc-1.0, we gave the base files explicitly
the same name as the files in the working copy. While that's handy for
debugging purposes, it also makes the wc extremely fragile. What we
could have done is both less fragile *and* more efficient:
[1:52pm] ehu: gstein_: since we need to write out the entries file
anyway (ie, since we need to update our administration anyway), it's
more efficient to store the new filename of the file to be used as the
base *after the transaction completes* than to rename the file. Saves
many disk-accesses in order to rename every updated/checked out file.
Well, my current plan is to write all base text files in a multi-level
directory structure using their sha-1 hash values as the filename, and
as the components in the directory tree. So you'd have something like:
The file will get written, then never touched again (except to be
removed when all refs go away). The only thing that will change is the
metadata pointing at the file, and that is stored in a sqlite
database. No renames. No moving around in various directories. Just
drop it in, and go.
Note that if people keep the /bases/ directory in their home dir, then
the bases will be shared across ALL working copies. If you go to check
out a second WC, or maybe a branch, or something... it should go
*really* fast. We won't have to pull any bases from the server -- only
the changes specific to that branch (which should be deltas, anyways,
so therefore small). Most of the files will be copied out of the bases
directory into the new WC.
Debugging may be a bit more difficult, but it should be very easy to
write a tool to look in the sqlite database and provide a pointer to
the right base (i.e. python 2.5 comes with sqlite; or a bash script
using the sqlite cmdline tool).
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-09-15 02:23:57 CEST