monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] announcing preliminary "dumb server" support for mo


From: Zbynek Winkler
Subject: Re: [Monotone-devel] announcing preliminary "dumb server" support for monotone
Date: Wed, 12 Oct 2005 21:34:26 +0200
User-agent: Debian Thunderbird 1.0.2 (X11/20050602)

I've just started to take a look at this...

Nathaniel Smith wrote:

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),
Hmm. I quite didn't get the picture until I tried it ;). I didn't have the patience to wait for the local do_export to finish on the monotone database... But the speed seems to be (unfortunately) comparable to the verification of the incomming changesets when doing regular pull. BTW: What is the limiting factor of the verification step? Does it do some sorting?

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.
Could it have something to do with the fact that there seems to be no 'automate keys' anymore? It prints the help message instead... I tried to use 'list keys' instead. BTW why does the output differ from the other 'list *'? Anyway, this could help:

in monotone.py:
   def key_names(self):
       ids = []
       for line in self.run_monotone(["list", "keys"]).split("\n"):
           if line == "" or line == "[public keys]":
               continue
           if line == "[private keys]":
               break
           ids.append(line.split(" ")[1])
       return ids

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...
How do you pick what branches are included? Doesn't it always export the whole database? I was surprised to find out that it does not differentiate between files, changesets etc.

Zbynek

--
http://zw.matfyz.cz/     http://robotika.cz/
Faculty of Mathematics and Physics, Charles University, Prague, Czech Republic





reply via email to

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