[tahoe-dev] [tahoe-lafs] #663: integrate a distributed revision control tool with Tahoe
tahoe-lafs
trac at allmydata.org
Tue Mar 17 10:11:32 PDT 2009
#663: integrate a distributed revision control tool with Tahoe
---------------------+------------------------------------------------------
Reporter: zooko | Owner: nobody
Type: defect | Status: new
Priority: major | Milestone: undecided
Component: unknown | Version: 1.3.0
Keywords: | Launchpad_bug:
---------------------+------------------------------------------------------
(This ticket is a candidate for a Google Summer of Code project. See
[wiki:GSoCIdeas the GSoCIdeas page].)
If you use a distributed revision control tool such as {{{darcs}}},
{{{git}}}, {{{bzr}}}, {{{hg}}}, or {{{monotone}}}, then you could use
Tahoe as a "repository in the cloud" -- a robust, distributed repository
which is always available. In addition, Tahoe makes secure sharing easier
-- readers of a repository can be sure that new changes came from the
authorized writers to that repository. This security guarantee is very
strong -- it should hold up even against attackers who can hijack DNS and
subvert servers -- but it is also very easy to use -- neither the writers
nor the readers need to login to any server or manage any crypto keys.
implementation issues:
If your revision control tool can use HTTP GET to read from a repository,
then the read side is trivial -- see for example what happens if you run
{{{darcs get --partial
http://testgrid.allmydata.org:3567/uri/URI%3ADIR2-RO%3Avf42lud2e5vvw237c7vyc5lotq%3At2nkfthjj5lhdgqqd4rtweazp3f2kltyhqecwwa2njj7suhjuy3q}}}.
You can currently use {{{tahoe cp -r}}} or {{{tahoe backup}}} to upload a
repository from your local filesystem into Tahoe, which can accomplish the
write side as a batch operation.
You can currently use the Tahoe-FUSE interface (#36) for read-only access
to a repository. If someone adds working write support to the Tahoe-FUSE
interface, then that can be used for the write side in immediate (not
batch) operation.
Depending on the details of your revision control tool, those approaches
might be completely sufficient. However, there could be interesting
performance, security, and sharing improvements with deeper integration
into the revision control tool. For example, the aforementioned {{{darcs
get}}} command-line will take minutes to complete -- many times longer
than darcs get from a traditional centralized repository does.
--
Ticket URL: <http://allmydata.org/trac/tahoe/ticket/663>
tahoe-lafs <http://allmydata.org>
secure decentralized file storage grid
More information about the tahoe-dev
mailing list