[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