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

Augmenting the WebDAV side of Subversion with merkle hashes for directories.

From: Paul Hammant <paul_at_hammant.org>
Date: Thu, 23 Nov 2017 11:28:34 -0500

OK, so most of ye know I am on this quest.

*Context*: I've a working merkle-ish client tracking changes in a Svn
server over DAV, and noting when files directories change and replicating
that change on the client side. For files it gets the SHA1 for the file,
stores it, and updates local file copies when the SHA1 changes. For
directories there's not SHA1 (yet), and it tracks directory revisions.
They'll change too fast, so I need to server-side create the SHA1s for
directories and cache them appropriately.

I know how to calculate the (presently missing) SHA1s for directories in
Svn. I even know how to do that for different auth settings for different
users safely.


I want to mount (over DAV only) '.indexSHA1s.csv' (or something similar) in
every directory, but I don't want those checked in (race condition
avoidance, and commit noise). Thus, while those files are visible over
DAV, subversion does not know about them, even if they do follow the ACLs
apparent in the authz files. Specifically, if you are not permitted to read
<root>/foo/bar/ then you cannot read <root>/foo/bar/.indexSHA1s.csv either.


What Apache2 technique to need to read about, and find docker-style
examples for to facilitate this? There's a huge amount of Apache modules,
and I can't glean whether Mod_filter or any Apache module is the right tool
for the job. Or even if this isn't delivered in modules at all (build in).

*More info: *I've prototyped my Merkle hash calc (and recalc) logic in
Rust, with tests of course. I may end up writing an apache module for this
(and donating back) but right now I'm happy with any Apache2-centric
technique (regardless of speed or hackyness) that can acclimate me to
augmenting the DAV available Svn representation with files that are
hot-calculated (and LRU cached).

Can someone point me in the right direction?

- Paul
Received on 2017-11-23 17:28:40 CET

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