[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Monotone-devel] announcing preliminary "dumb server" support for monoto
From: |
Nathaniel Smith |
Subject: |
[Monotone-devel] announcing preliminary "dumb server" support for monotone |
Date: |
Fri, 16 Sep 2005 04:16:58 -0700 |
User-agent: |
Mutt/1.5.9i |
I finally got tired of people complaining that monotone couldn't be
used in funky situations where running a special-purpose daemon was
too hard, and decided to do something about it. Branch
net.venge.monotone.dumb has some preliminary code in python that can:
dump a monotone database into an opaque filesystem representation
import a monotone database from such an opaque filesystem
representation
synchronize two such opaque filesystem representations over generic
transports. I've written backends for local filesystem
(read/write), SFTP (read/write, requires paramiko+patches,
included), and HTTP and FTP (read-only, requires urlgrabber, not
included). Adding new backends is quite straightforward, there's
a little abstract interface you plug in.
updates a monotone db on the fly while
It has hugely rough corners ATM -- there's no command line interface,
the rollback support isn't _quite_ right, it's slow on large dbs, no
pipelining (should help speed a lot), it can't push to FTP yet, not a
proper python package. Oh, and I just noticed that it doesn't include
pubkeys in the data to synchronize, oops.
OTOH, it supports monotone's full sync semantics (multiple people can
push to the same "repo", you can have backup "repos" and sync with
them indiscriminately, etc.), and should be reasonably efficient (it
uses merkle tries to do low-overhead set synchronization). Won't be
as fast as netsync, or as flexible (whoever puts up the repo gets to
choose what branches are included, you don't get to pick on the fly
like for netsync), but might be handy for some people...
Oh, It comes with a generic set-synchronization-over-dumb-transport
layer that people might find interesting independently, too.
I've been testing it by going:
$ cd dumb
$ python2.4 # because we need the subprocess module
>>> import monotone
>>> m = monotone.Monotone("mydb.db")
>>> import dumb
>>> dumb.do_push(m, "local_scratch_dir", "sftp://remote/remotedir")
>>> # pretend someone pushed some other stuff there
>>> dumb.do_pull(m, "local_scratch_dir", "sftp://remove/remotedir")
Which should hopefully give anyone who wants to play around enough of
a lead to get started...
pull venge.net net.venge.monotone.dumb
or
http://viewmtn.angrygoats.net//headofbranch.psp?branch=net.venge.monotone.dumb
(then click "tar archive")
It needs a name. monotone-dumb seems a little... dumb... but may
stick unless anyone has better suggestions.
Enjoy,
-- Nathaniel
--
.i dei jitfa fanmo xatra
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Monotone-devel] announcing preliminary "dumb server" support for monotone,
Nathaniel Smith <=