monotone-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]