[Monotone-devel] nvm.stripped on cygwin

2009-01-17 Thread Lapo Luchini
...is basically working.

Needs the existing pcre, libidn, sqlite3 packages.
Needs also botan and lua, which are currently not packages, though I
have an almost-ready package for the first and found a complete package
for the second on CygPorts (an unofficial repository of source
packages); I will probably propose as maintainer for those two in order
to be able to create a package for monotone 0.43 (which I hope will be
"stripped").

Configuration needs only the usual path for Boost:

nice sh -c 'autoreconf -i && CXXFLAGS="-ggdb
-I/usr/include/boost-1_33_1" ./configure && make'

The testsuite reported no error in the first group, while there were
some in the second group, and then it stopped.
It's been a while since my last check of the standard Cygwin build, so
this might not be a regression.

132 clone_creates_right__MTN_options  FAIL (line 27)
134 clone_warning_with_multiple_heads FAIL (line 20)
197 empty_environment FAIL (line 40)
441 ssh_agent ok
error: could not remove
'/cygdrive/c/Works/monotone/stripped/tester_dir/tests/ssh_agent': Device
or resource busy
==
1 of 3 test suites failed

-- 
Lapo Luchini - http://lapo.it/

“It is dangerous to be right when the government is wrong.” (Voltaire)



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] git fast-export

2009-01-17 Thread Felipe Contreras
On Sun, Jan 18, 2009 at 1:18 AM, Paul Aurich  wrote:
> And Felipe Contreras spake on 01/17/2009 02:52 PM, saying:
>> I ran my comparison script, but unfortunately the first revision has a
>> missmatch:
>>
>> yours:
>> author Tailor Script  953780991 +
>>
>> mine:
>> author Tailor Script  953773791 +0200
>>
>> Which suggest that your script is not handling the timezone correctly
>> (not sure about that).
>
> No, his script is handling it properly (based solely on this example).
>
> Monotone uses UTC internally and git does some crazy wacky things with
> timezones (in short, the timezone shown is /just/ for prettifying the date;
> the timestamp by itself *must* be the time of the commit in UTC). See
> https://kerneltrap.org/mailarchive/git/2007/2/6/237902
>
>  $ mtn automate certs d137c7046bae7e4a0144fee82bfce8061f61e3b3 | grep date
> -A 1
>   name "date"
>  value "2000-03-23T03:09:51"
>
>  $ date -d "2000-03-23 03:09:51" -u
>  Thu Mar 23 03:09:51 UTC 2000
>  $ date -d "2000-03-23 03:09:51" -u  +"%s"
>  953780991

True. Then the issue is with my script (ruby date parsing).

It looks like I would have to re-generate my repo clone (yay for one
whole day of conversion) for the comparison.

Before I do that, can we agree on a format for unknown committers?

-- 
Felipe Contreras


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] nvm.stripped on Win32 MinGW; pkg-config

2009-01-17 Thread Daniel Atallah
On Sat, Jan 17, 2009 at 9:09 PM, Stephen Leake
 wrote:
> Since most of the required libraries support pkg-config, it would make
> sense to use pkg-config with MinGW.
>
> However, there is a classic catch-22:
>
> pkg-config requires glib
>
> glib requies pkg-config
>
> !!!
>
> So I need a MinGW-compatible binary of one of the above to get
> started.
>
> The hosting website for pkg-config
> (http://pkgconfig.freedesktop.org/releases) has no binaries.
>
> The hosting website for glib (http://www.gtk.org) has Win32 dlls, but
> not the .a files needed by MinGW gcc.
>
> Does anyone have a solution for this?

Binaries of both pkg-config and glib are available here:
http://www.gtk.org/download-windows.html

The "dev" downloads for glib include the headers and link libraries.

-D


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Re: times to load various things from the database

2009-01-17 Thread Derek Scherger
On Sat, Jan 10, 2009 at 11:58 PM, Derek Scherger wrote:

>
> Sat Jan 10 09:24 PM ~/monotone/mainline $ time ./mtn db load_rosters
> mtn: loading rosters
> mtn:   rosters
> mtn: 14,499/14,499
>
> real25m11.219s
> user24m20.875s
> sys 0m44.263s
>

The following patch improves this by a factor of 3:

Sat Jan 17 09:47 PM ~/monotone/mainline $ time ./mtn db load_rosters
mtn: loading rosters
mtn:   rosters
mtn: 14,541/14,541

real7m55.062s
user7m46.029s
sys 0m9.061s

This patch does three things:

- every time a base roster (i.e. fulltext) is loaded, it is inserted into
the roster cache. this seems generally useful as every roster reconstruction
will require a base roster to start from. loading a 350KB roster seems to
take about 30ms here, grabbing one from the cache is around 3ms.

- after a reconstruction path is loaded it is scanned in forward order
looking for a cached roster to start from. if one is found, the
reconstruction path is truncated at that point and reconstruction will start
from the closest cached roster.

- when applying a chain of deltas to a base roster, every 64th roster is
cached so that the previous step is likely to hit something.

I'm not sure if this is likely to cause problems with other aspects of
performance or not. I'll try timing the testsuite, a full pull and maybe a
db check as well with and without to see what it does.

I also wonder whether our cache sizes should be configured via lua hooks
rather than header file constants. A 7MB static cache size doesn't seem very
generous, sitting here on a an older system with 2GB of ram. I don't see
anything in the roster cache stuff to report on sizes, hit rates, etc. so
evaluating the cache performance would require more work.

Cheers,
Derek

#
# old_revision [cef7a2d9c06e0b96648cce7980c5e700b93f5add]
#
# patch "database.cc"
#  from [1d015db8c66b3d39c37b2bb7b759f5b21854a6b8]
#to [3fe17463fadcd76df9fcc1d45b6a7b698e2d0bf8]
#

--- database.cc 1d015db8c66b3d39c37b2bb7b759f5b21854a6b8
+++ database.cc 3fe17463fadcd76df9fcc1d45b6a7b698e2d0bf8
@@ -1620,6 +1620,17 @@ database_impl::get_roster_base(revision_
   data dat;
   decode_gzip(dat_packed, dat);
   read_roster_and_marking(roster_data(dat), roster, marking);
+
+  // cache this base roster
+
+  shared_ptr r(new roster_t);
+  shared_ptr m(new marking_map);
+  cached_roster cr;
+  *r = roster;
+  *m = marking;
+  cr.first = r;
+  cr.second = m;
+  roster_cache.insert_clean(ident, cr);
 }

 void
@@ -1988,6 +1999,15 @@ database::get_roster_version(revision_id
 get_reconstruction_path(ros_id.inner(), graph, selected_path);
   }

+  // scan the reconstruction path in forward order looking for a cache hit
+  // if we find one, truncate the reconstruction path at that point
+  for (size_t i = 0; i < selected_path.size(); ++i)
+if (imp->roster_cache.exists(revision_id(selected_path[i])))
+  {
+selected_path.resize(i+1);
+break;
+  }
+
   id curr(selected_path.back());
   selected_path.pop_back();
   // we know that this isn't already in the cache (because of the early
exit
@@ -1996,6 +2016,7 @@ database::get_roster_version(revision_id
   shared_ptr marking(new marking_map);
   imp->get_roster_base(revision_id(curr), *roster, *marking);

+  int cache_count = 0;
   for (reconstruction_path::reverse_iterator i = selected_path.rbegin();
i != selected_path.rend(); ++i)
 {
@@ -2006,6 +2027,20 @@ database::get_roster_version(revision_id
   imp->get_roster_delta(nxt, curr, del);
   apply_roster_delta(del, *roster, *marking);
   curr = nxt;
+
+  if (++cache_count % 64 == 0 &&
!imp->roster_cache.exists(revision_id(*i)))
+{
+  // insert the current roster into the cache
+  shared_ptr r(new roster_t);
+  shared_ptr m(new marking_map);
+  *r = *roster;
+  *m = *marking;
+  cached_roster cr;
+  cr.first = r;
+  cr.second = m;
+  imp->roster_cache.insert_clean(revision_id(*i), cr);
+}
+
 }

   // Double-check that the thing we got out looks okay.  We know that when
@@ -2027,7 +2062,8 @@ database::get_roster_version(revision_id
   // const'ify the objects, to save them and pass them out
   cr.first = roster;
   cr.second = marking;
-  imp->roster_cache.insert_clean(ros_id, cr);
+  if (!imp->roster_cache.exists(ros_id))
+imp->roster_cache.insert_clean(ros_id, cr);
 }
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] nvm.stripped on Win32 MinGW; Botan

2009-01-17 Thread Zack Weinberg
On Sat, Jan 17, 2009 at 7:26 PM, Stephen Leake
 wrote:
>./tester: error while loading shared libraries: libbotan-1.8.0.so:
>cannot open shared object file: No such file or directory
>
> and yet:
>
> ste...@localhost$ ls /usr/local/lib/libbotan*
> /usr/local/lib/libbotan-1.8.0.so  /usr/local/lib/libbotan.a  
> /usr/local/lib/libbotan.so
> ste...@localhost$
>
> Any ideas?
>
> hmm. what path is searched for libraries? maybe I need to add
> /usr/local/lib to something?

probably /etc/ld.so.conf?  although, on my system, libc seems to have
set that up already...

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] nvm.stripped on Win32 MinGW; Botan

2009-01-17 Thread Stephen Leake
"Zack Weinberg"  writes:

> On Sat, Jan 17, 2009 at 6:03 PM, Stephen Leake
>  wrote:
>>
>> m4/botan.m4 says we need botan > 1.6.3, but not 1.7.14.
>>
>> However, on debian, I have 1.7.8-3, which configure accepts, but at
>> runtime mtn says we need 1.7.22.
>
> If we can't build .stripped with what's currently in debian unstable,
> I'd say we need to relax our requirements.

I'm only looking in Debian stable and testing; Botan 1.8.0 is in
Debian unstable.

> However, on an unstable-only system I've got libbotan1.6 (version
> 1.6.5-3) and libbotan1.8 (version 1.8.0-1) and no 1.7 anything.
> (packages.debian.org leads me to believe that libbotan1.7 is in
> testing but will be replaced by libbotan1.8 in the near future.)   I'd
> have no objection to requiring 1.8.0 or greater.

Ok.

Except that it doesn't work for me, when I installed from source:

./tester: error while loading shared libraries: libbotan-1.8.0.so:
cannot open shared object file: No such file or directory

and yet:

ste...@localhost$ ls /usr/local/lib/libbotan*
/usr/local/lib/libbotan-1.8.0.so  /usr/local/lib/libbotan.a  
/usr/local/lib/libbotan.so
ste...@localhost$ 

Any ideas?

hmm. what path is searched for libraries? maybe I need to add
/usr/local/lib to something?

-- 
-- Stephe


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] nvm.stripped on Win32 MinGW; Botan

2009-01-17 Thread Zack Weinberg
On Sat, Jan 17, 2009 at 6:57 PM, Zack Weinberg  wrote:
> (packages.debian.org leads me to believe that libbotan1.7 is in
> testing but will be replaced by libbotan1.8 in the near future.)

... I should know to check the testing migration report before saying
things like that.  Please read "after Lenny is released" where I wrote
"in the near future." :-P

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] nvm.stripped on Win32 MinGW; Botan

2009-01-17 Thread Zack Weinberg
On Sat, Jan 17, 2009 at 6:03 PM, Stephen Leake
 wrote:
>
> m4/botan.m4 says we need botan > 1.6.3, but not 1.7.14.
>
> However, on debian, I have 1.7.8-3, which configure accepts, but at
> runtime mtn says we need 1.7.22.

If we can't build .stripped with what's currently in debian unstable,
I'd say we need to relax our requirements.

However, on an unstable-only system I've got libbotan1.6 (version
1.6.5-3) and libbotan1.8 (version 1.8.0-1) and no 1.7 anything.
(packages.debian.org leads me to believe that libbotan1.7 is in
testing but will be replaced by libbotan1.8 in the near future.)   I'd
have no objection to requiring 1.8.0 or greater.

zw


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Dealing with lost key

2009-01-17 Thread dlakelan

Timothy Brownawell wrote:


Dropping anything really doesn't work with our architecture. If *anyone*
forgets to drop it, it will come back next time that person syncs.


Ok, rather than dropping, perhaps there should be a way for a user to 
invalidate a set of certs and then create new certs to replace them. The 
idea being to tell monotone that certain certificates are known to be 
invalid (for example because a key has been discovered to be invalid or 
untrustworthy), but that we have other reasons to trust various certs 
(ie. we've validated the changes ourselves and even though the key can't 
be trusted, we want to trust the revisions based on our own certificates).


Let me give an example use case (other than the one that I have already 
encountered).


Person A has been contributing to a project that Person B is 
participating in. Person A trusts person B's key. Person B begins to 
write code that Person A does not approve of (say it has some hidden 
functionality, backdoors, etc). person A wants to invalidate person B's 
keys for all future contributions, but retain the work that was done by 
person B before. Person A also wants to communicate to other members of 
the collaboration that he does not trust person B, and that he has 
reviewed person B's code and only approves of some of the changes...


I could imagine that this sort of thing might happen every so often... 
and right now monotone doesn't seem to provide a clear mechanism for 
this kind of trust revocation and/or secondary certification.


Thanks again,
Dan


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Dealing with lost key

2009-01-17 Thread Timothy Brownawell
On Sat, 2009-01-17 at 15:05 -0800, dlakelan wrote:
> Timothy Brownawell wrote:
> > On Thu, 2009-01-15 at 14:19 -0800, dlakelan wrote:
> >> I've lost a key which has been used to certify a variety of things in 
> >> one project. I've generated a new key, and now I'd like to replace all 
> >> the old certificates with new certificates from the new key, and have my 
> >> collaborators do the same... so we don't get a lot of warnings about 
> >> incorrect certs. How can I do this?
> > 
> > There's no simple way to replace certs like that, the easiest solution
> > is to just keep them and make sure the new key has a different name.
> ...
> > If you really do need to delete the old certs and generate new ones,
> > something along these lines would probably work (not tested, may ruin
> > your db)...
> 
> 
> Thanks for your suggestions. I think we will simply keep the old public 
> key and certs.
> 
> If there is no way to invalidate a key, then it seems difficult to deal 
> with a security issue such as when a key is compromised and that key may 
> be signing malicious code which collaborators are unaware of... for example.
> 
>  From a security standpoint, it seems to me that monotone should have a 
> way to at the very least, expire trust in a key.

Currently the only way to do that is with the get_revision_cert_trust
lua hook,
   http://monotone.ca/docs/Hooks.html#Trust-Evaluation-Hooks
which will have to be set up by everyone. (Yes, we know this isn't
ideal.)

> Also, if asked to generate a new key, monotone should refuse if that key 
>   name is already known to monotone, unless some kind of 
> --force-overwrite-key switch is given...perhaps it already does?

It does.

> Finally, the documentation should stress the fact that two keys with the 
> same name are not supported...

...I guess this would go in the Conecpts => Certificates section (1.4).

>  and it seems to me that it should be 
> possible within monotone to ask it to drop signatures and to re-sign 
> certificates with a new key.

Dropping anything really doesn't work with our architecture. If *anyone*
forgets to drop it, it will come back next time that person syncs.

> Thanks to the monotone developers for a very nice revision control system!
> Dan

:)




___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] encrypted netsync (was: merging in "serve raw 'automate stdio' over network")

2009-01-17 Thread Timothy Brownawell
On Sat, 2009-01-17 at 19:44 -0600, Matthew Nicholson wrote:
> Timothy Brownawell wrote:
> >
> > I should also mention that I'm thinking we eventually want to move to
> > SSH2 for encryption/authentication (pending finding a good server-side
> > SSH2 library, there only seem to be client-only libraries available
> > now). This would let us only need to listen in one place for both
> > netsync and stdio (and whatever else we might come up with), and would
> > also mean not needing to keep our own authentication code or write our
> > own encryption code (I know I've seen requests for encrypted netsync).
> 
> Why ssh2 and not ssl/tls encryption?  Just curious.  I imagine ssl 
> libraries would be more prevalent. 

Because it didn't occur to me, probably because the main tls use I know
is authenticating the server (mostly I think of https) while we
also/mainly want to authenticate the client (which is what ssh is used
for). We'd need our own multiplexing, but that should be quite a lot
less work than pulling a library out of an ssh server.

>  And instead of relying on SSH for 
> authentication, we could add the option of using PAM for authentication 
> which is what SSH uses anyway.

No, probably better to keep using keys for that. I had been thinking ssh
pubkey authentication, but tls seems to allow for client certificates
which should be what we want.


-- 
Timothy

Free (experimental) public monotone hosting: http://mtn-host.prjek.net



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] nvm.stripped on Win32 MinGW; pkg-config

2009-01-17 Thread Stephen Leake
Since most of the required libraries support pkg-config, it would make
sense to use pkg-config with MinGW.

However, there is a classic catch-22: 

pkg-config requires glib

glib requies pkg-config

!!!

So I need a MinGW-compatible binary of one of the above to get
started.

The hosting website for pkg-config
(http://pkgconfig.freedesktop.org/releases) has no binaries.

The hosting website for glib (http://www.gtk.org) has Win32 dlls, but
not the .a files needed by MinGW gcc.

Does anyone have a solution for this?

I guess I should ask on the Mingw mailing list.

-- 
-- Stephe


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] nvm.stripped on Win32 MinGW; Botan

2009-01-17 Thread Stephen Leake

m4/botan.m4 says we need botan > 1.6.3, but not 1.7.14.

However, on debian, I have 1.7.8-3, which configure accepts, but at
runtime mtn says we need 1.7.22.

On the botan website, I can download 1.8.0 or 1.6.5. I gather I should
use 1.8.0, for both Debian and Windows MinGW.

Should I also fix m4/botan.m4 to require > 1.7.21? or >= 1.8.0?

-- 
-- Stephe


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] encrypted netsync (was: merging in "serve raw 'automate stdio' over network")

2009-01-17 Thread Matthew Nicholson

Timothy Brownawell wrote:


I should also mention that I'm thinking we eventually want to move to
SSH2 for encryption/authentication (pending finding a good server-side
SSH2 library, there only seem to be client-only libraries available
now). This would let us only need to listen in one place for both
netsync and stdio (and whatever else we might come up with), and would
also mean not needing to keep our own authentication code or write our
own encryption code (I know I've seen requests for encrypted netsync).


Why ssh2 and not ssl/tls encryption?  Just curious.  I imagine ssl 
libraries would be more prevalent.  And instead of relying on SSH for 
authentication, we could add the option of using PAM for authentication 
which is what SSH uses anyway.


--
Matthew Nicholson
matt-land.com


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Mini Summit 2009

2009-01-17 Thread Matthew Nicholson

Markus Wanner wrote:


[...]



Hi,

I am here now, and I will be here for the rest of the evening and 
tomorrow after noon (America, South East (CDT)).


I am willing to lend a hand to help anyone who needs it (testing, 
coding, whatever).  Personally, I am interested in working on some of 
the quickie tasks on the wiki and some other things, specifically.


 * a mtn rename --guess command, or mtn rename --missing
 * mtn detach and mtn attach
 * concurrent access to a single database (not sure what is involved 
with this one, so I will need your help).



I am 'man' in IRC (and matthew_i as well when I am at work).

--
Matthew Nicholson
matt-land.com


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] merging in "serve raw 'automate stdio' over network"

2009-01-17 Thread Timothy Brownawell
On Sat, 2009-01-17 at 20:46 +, Timothy Brownawell wrote:
> Branch net.venge.monotone.tbrownaw.serve_automate adds a --bind-automate
> option to 'mtn serve', to allow serving raw automate stdio over the
> network. This doesn't have any authentication, so it's only safe for
> private interfaces (127.x.x.x).
> 
> This allows for concurrent netsync and "automate stdio" access to a db.
> 
> Does anyone object to merging this? (Maybe someone wants to add
> authentication and a command to act as a front-end first, so it can
> safely be run on on public interfaces?)

I should also mention that I'm thinking we eventually want to move to
SSH2 for encryption/authentication (pending finding a good server-side
SSH2 library, there only seem to be client-only libraries available
now). This would let us only need to listen in one place for both
netsync and stdio (and whatever else we might come up with), and would
also mean not needing to keep our own authentication code or write our
own encryption code (I know I've seen requests for encrypted netsync).

So I'd think un-secured stdio would be more useful for now than no
network stdio, and we can clean up the networking later. But maybe
there's a maintainable way to extend our current authentication to
networked 'automate stdio', or maybe the potential for confusion
resulting in putting an insecure protocol on a public interface is too
great...

-- 
Timothy

Free (experimental) public monotone hosting: http://mtn-host.prjek.net



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] git fast-export

2009-01-17 Thread Paul Aurich
And Felipe Contreras spake on 01/17/2009 02:52 PM, saying:
> I ran my comparison script, but unfortunately the first revision has a
> missmatch:
> 
> yours:
> author Tailor Script  953780991 +
> 
> mine:
> author Tailor Script  953773791 +0200
> 
> Which suggest that your script is not handling the timezone correctly
> (not sure about that).

No, his script is handling it properly (based solely on this example).

Monotone uses UTC internally and git does some crazy wacky things with
timezones (in short, the timezone shown is /just/ for prettifying the date;
the timestamp by itself *must* be the time of the commit in UTC). See
https://kerneltrap.org/mailarchive/git/2007/2/6/237902

  $ mtn automate certs d137c7046bae7e4a0144fee82bfce8061f61e3b3 | grep date
-A 1
   name "date"
  value "2000-03-23T03:09:51"

  $ date -d "2000-03-23 03:09:51" -u
  Thu Mar 23 03:09:51 UTC 2000
  $ date -d "2000-03-23 03:09:51" -u  +"%s"
  953780991

~Paul


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Dealing with lost key

2009-01-17 Thread dlakelan

Timothy Brownawell wrote:

On Thu, 2009-01-15 at 14:19 -0800, dlakelan wrote:
I've lost a key which has been used to certify a variety of things in 
one project. I've generated a new key, and now I'd like to replace all 
the old certificates with new certificates from the new key, and have my 
collaborators do the same... so we don't get a lot of warnings about 
incorrect certs. How can I do this?


There's no simple way to replace certs like that, the easiest solution
is to just keep them and make sure the new key has a different name.

...

If you really do need to delete the old certs and generate new ones,
something along these lines would probably work (not tested, may ruin
your db)...



Thanks for your suggestions. I think we will simply keep the old public 
key and certs.


If there is no way to invalidate a key, then it seems difficult to deal 
with a security issue such as when a key is compromised and that key may 
be signing malicious code which collaborators are unaware of... for example.


From a security standpoint, it seems to me that monotone should have a 
way to at the very least, expire trust in a key.


Also, if asked to generate a new key, monotone should refuse if that key 
 name is already known to monotone, unless some kind of 
--force-overwrite-key switch is given...perhaps it already does?


Finally, the documentation should stress the fact that two keys with the 
same name are not supported... and it seems to me that it should be 
possible within monotone to ask it to drop signatures and to re-sign 
certificates with a new key.


Thanks to the monotone developers for a very nice revision control system!
Dan



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] nvm.stripped on Win32 MinGW

2009-01-17 Thread Stephen Leake
I'm working on nvm.stripped on Win32 MinGW.

So far, configure gets to testing for pcre.

I've installed pcre 7.8 from http://www.pcre.org/

configure finds pcre-config, and says it's using
PCRE_CFLAGS=-I/usr/local/include

but the actuall compiler command line does _not_ use that flag. 

I looked in m4/pcre.m4, and don't see anything obvious wrong. the
configure script itself looks correct as well.

I tried setting CFLAGS=-I/usr/local/include; that was ignored as well.

Ah! I put debug statements in configure; something changed ac_link so
it no longer includes $CFLAGS! it now has $CXXFLAGS $CPPFLAGS instead!
This appears to be done by the AC_LANG([C++]) statment, or maybe one of
the CXX statements after that.

So I guess m4/pcre.m4 needs to be changed to set CXXFLAGS instead? or
both, in case someone uses it with a C compiler. m4/lua.m4 sets both
CFLAGS and CPPFLAGS.

Applying that change in m4/pcre.m4 (in two places) lets configure
recognize pcre.

Aside; why doesn't mingw g++ look in -I/usr/local/include in the first
place? It does on Debian, which may be why this bug in pcre.m4 has not
been found yet.

On to Botan ...

-- 
-- Stephe


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] git fast-export

2009-01-17 Thread Felipe Contreras
On Sat, Jan 17, 2009 at 9:04 AM, Derek Scherger  wrote:
> On Wed, Jan 14, 2009 at 12:50 AM, Felipe Contreras
>  wrote:
>>
>> >> 1) Your tool adds a bunch of "Monotone-" fields, can those be disabled?
>> >
>> > There's no option at the moment but it would be easy to add.
>>
>> It would be really useful.
>
> I've added --log-revids and --log-certs to enable including revision ids and
> cert values in the commit logs. These are off by default .

Great!

>> >> 2) There's no author mapping, can this option be added?
>> >
>> > I'm not exactly sure what you mean by author mapping but I assume
>> > translating between things like "f...@bedrock.com" and "Fred Flintstone
>> > "? Is there a generally accepted format that other
>> > tools
>> > use for this?
>>
>> Yes, that's what I meant.
>>
>> The only format I know is the one from git-svn:
>> felipec = Felipe Contreras 
>
> I've added --authors-file and --branches-file options that work like this
> for mapping author names and branch names respectively. Names not found in
> these maps are used as-is. I've also changed the default branch to "unknown"
> from "master" but this can be changed with the branches-file mapping to
> whatever you want with a line like "unknown = whatever-you-want."

Very nice. Now the only difference is that for unknown users my script
maps them to "Unknown ".

>> >> 3) I add the mtn sha1 in refs/mtn/
>> >
>> > This is easy to add too. I have added refs/mtn/roots/ and
>> > refs/mtn/leaves/ and was wondering about all of the monotone
>> > revision
>> > ids. I assume the leaf refs would prevent git from wanting to garbage
>> > collect otherwise unreferenced revs if there were any?
>
> I've added --refs=roots, --refs=leaves and --refs=revs to include
> refs/mtn/roots, refs/mtn/leaves and refs/mtn/revs respectively.

Great :)

>> If there's a ref pointing to it, then it's not pruned.
>
> Good. Including --refs=leaves should make sure that nothing is subject to
> garbage collection then.
>
> Branches and tags can be manually fixed a posteriori, no big issue.
>>
>> The important things are the commits themselves.
>
> Not always. Monotone allows things in branch names that git does not. If
> these aren't changed git will fail to import them.
> Use --branches-file to map offending names to something git can handle.

True.

>> It probably depends on the intent of the clone:
>> a) migrate the repo forever
>> b) mirror a mtn repo
>>
>> Right now I'm interested in b), so I find the ref/mtn approach very
>> useful since I can quickly look for the mtn or git sha1.
>
> The --refs=revs option does clutter up the gitk display somewhat but
> otherwise seems fine.

I tested your changes and converted the pidgin repo, on the second try
I was finally able to convert it, took me 8 hours (1 revs/s).

I ran my comparison script, but unfortunately the first revision has a
missmatch:

yours:
author Tailor Script  953780991 +

mine:
author Tailor Script  953773791 +0200

Which suggest that your script is not handling the timezone correctly
(not sure about that).

Would it be possible to pause after a certain amount of commits, or at
least issue a checkpoint? (maybe git fast-import has this option)

Very good job! I'll try to look further into this later.

Cheers.

-- 
Felipe Contreras


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Re: Mini Summit 2009

2009-01-17 Thread Nathaniel Smith
On Sat, Jan 17, 2009 at 1:47 PM, Felipe Contreras
 wrote:
> On Sat, Jan 17, 2009 at 6:36 PM, Emile Snyder  wrote:
>> There's a link off of the monotone home page.  It's channel #monotone on
>> irc.oftc.net I think.
>
> Why oftc? Why not freenode?

"Because it always has been."

-- Nathaniel


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Documentation Texinfo XML to Wiki converter

2009-01-17 Thread Philipp Gröschler
In the course of the current Mini Summit I spent the afternoon hacking
on a (yet still) small XSLT file whose purpose will be the conversion of
Monotone's Texinfo Documentation to a set of multiple files which can be
used for the Wiki. Unfortunately I have to use a rather new Java based
version of Saxon [1] for the transformation process, because neither
Gnome's libxml nor Apache Xalan where able to process a XSLT 2.0
template, which is needed for the file splitting and some regular
expression stuff. XSLT 1.0 and 1.1 do not have these features AFAIK, or
only as vendor specific extensions, which doesn't help either.

The current state is that the XSLT searches the whole Texinfo XML file,
collects the node hierarchy and therefrom builds up a directory
structure with one file for each node (or rather: chapter).

Next task would be to take each chapter's XML code and transform it to
the desired output format. Currently I have the choice between HTML and
the Wiki's own MDWN format, with the possibility to implement both and
allow the user to chose between the two before the actual
transformation. The number of target formats is not limited and is only
depending on how many of them will be needed and, after all, how many
complete and working style transformation templates will be created.

So the question at the moment is: which output format would be the most
useful? According to Thomas Keller there could be some formatting
limitations in the Wiki format, but due to lacking experience with that
format I can't affirm that. What I can say is that HTML can surely cope
with almost everything, but would likely be more time consuming to
implement. Also it could be more reasonable to directly create files for
the Wiki, since HTML can already be created by makeinfo, though lacking
Monotone's Wiki style.

That's it for the moment!

Greetings,

Philipp


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Re: Mini Summit 2009

2009-01-17 Thread Felipe Contreras
On Sat, Jan 17, 2009 at 6:36 PM, Emile Snyder  wrote:
> There's a link off of the monotone home page.  It's channel #monotone on
> irc.oftc.net I think.

Why oftc? Why not freenode?

-- 
Felipe Contreras


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] merging in "serve raw 'automate stdio' over network"

2009-01-17 Thread Timothy Brownawell
Branch net.venge.monotone.tbrownaw.serve_automate adds a --bind-automate
option to 'mtn serve', to allow serving raw automate stdio over the
network. This doesn't have any authentication, so it's only safe for
private interfaces (127.x.x.x).

This allows for concurrent netsync and "automate stdio" access to a db.

Does anyone object to merging this? (Maybe someone wants to add
authentication and a command to act as a front-end first, so it can
safely be run on on public interfaces?)

-- 
Timothy

Free (experimental) public monotone hosting: http://mtn-host.prjek.net



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Dealing with lost key

2009-01-17 Thread Timothy Brownawell
On Thu, 2009-01-15 at 14:19 -0800, dlakelan wrote:
> I've lost a key which has been used to certify a variety of things in 
> one project. I've generated a new key, and now I'd like to replace all 
> the old certificates with new certificates from the new key, and have my 
> collaborators do the same... so we don't get a lot of warnings about 
> incorrect certs. How can I do this?

There's no simple way to replace certs like that, the easiest solution
is to just keep them and make sure the new key has a different name.

I don't think we have a command that can delete particular certs (except
branch certs, and that isn't by key), and I also don't think we have a
command to get all certs from a particular key.

If you really do need to delete the old certs and generate new ones,
something along these lines would probably work (not tested, may ruin
your db)...


# in case this breaks things horribly
cp your_db your_db_backup

# get a list of old certs
mtn -d your_db db execute "select hex(id), name,
replace(value,x'0A','NEWLINE') from revision_certs where keypair =
'your_keypair_id'" >old_certs

# delete old certs
mtn -d your_db db execute "delete from revision_certs where keypair =
'your_keypair_id'"

# create new certs to replace them
IFS='|'
while read revid cert_name cert_value
do
mtn -d your_db -k your_new_keypair_id cert $revid $cert_name "$(echo
$cert_value | sed 's/NEWLINE/\n/g')"
done


Collaborators would have to either (1) delete/rename their databases and
pull a fresh db from you (this includes any dedicated server databases,
those would also have to be deleted/replaced) or (2) run the backup and
delete-old-certs steps and re-pull (again including any dedicated
servers).



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] comments on merging nvm.error-handling?

2009-01-17 Thread Timothy Brownawell
net.venge.monotone.error-handling is meant to clean up our E(), I(), N()
usage somewhat, so that for example receiving an invalid revision from
the network will be treated differently than internally generating an
invalid revision and won't crash the server.

N() is gone, and E() takes an extra argument, E(condition, origin,
message). The origin is an origin::type enum (see origin_type.hh), and
indicates where the data causing the error is from. E(...,
origin::user, ...) is equivalent to what N() was.

All vocab types and most other classes now track where their data came
from with a origin::type made_from member (which can be obtained by
inheriting from origin_aware), and this is required when making a vocab
type from a string (so "branch_name(arg())" won't work, but
"branch_name(arg(), origin::user)" or "typecast_vocab(arg)"
will work.

This also removes informative_failure, and replaces it with
recoverable_failure and unrecoverable_failure. Which one is thrown by
E() depends on the origin, currently unrecoverable for internal and
database origins, and recoverable for others.

Does anyone have problems with merging this?

An example of the changes is:
=== revision.hh ===
struct
revision_t : public origin_aware
{
  void check_sane() const;
=== snip ===

=== revision.cc ===
void revision_t::check_sane() const
{
  E(!null_id(new_manifest), made_from, F("Revision has no manifest
id"));

  if (edges.size() == 1)
{
  // no particular checks to be done right now
}
  else if (edges.size() == 2)
{
  // merge nodes cannot have null revisions
  for (edge_map::const_iterator i = edges.begin(); i != edges.end();
++i)
E(!null_id(edge_old_revision(i)), made_from,
  F("Merge revision has a null parent"));
}
  else
// revisions must always have either 1 or 2 edges
E(false, made_from, F("Revision has %d edges, not 1 or 2") %
edges.size());

  // we used to also check that if there were multiple edges that had
patches
  // for the same file, then the new hashes on each edge matched each
other.
  // this is not ported over to roster-style revisions because it's an
  // inadequate check, and the real check, that the new manifest id is
correct
  // (done in put_revision, for instance) covers this case
automatically.
}

=== snip ===


-- 
Timothy

Free (experimental) public monotone hosting: http://mtn-host.prjek.net



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Re: Mini Summit 2009

2009-01-17 Thread Emile Snyder
There's a link off of the monotone home page.  It's channel #monotone on
irc.oftc.net I think.
-emile

On Sat, Jan 17, 2009 at 8:16 AM, Stephen Leake <
stephen_le...@stephe-leake.org> wrote:

>
> Where is the IRC? I can't find instructions for that on the mtn wiki
> (I _really_ miss the search facility there!). I have Jabber with an
> IRC backend installed on my Debian box; where do I point it?
>
>
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Re: Mini Summit 2009

2009-01-17 Thread Timothy Brownawell
On Sat, 2009-01-17 at 11:16 -0500, Stephen Leake wrote:
> Where is the IRC? I can't find instructions for that on the mtn wiki
> (I _really_ miss the search facility there!). I have Jabber with an
> IRC backend installed on my Debian box; where do I point it?

It's on the front page, not the wiki. #monotone on OFTC (irc.oftc.net).



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Re: Mini Summit 2009

2009-01-17 Thread Stephen Leake
Lapo Luchini  writes:

> Markus Wanner wrote:
>> Welcome to the Monotone Mini Summit 2009,
>> 
>> I will be around mostly, but also have important non-mtn things on my
>> agenda (I'm looking for work in Zurich).
>
> I'm here 'till 18:00 CET (more or less) both today and tomorrow unless
> some real life decides to intrude in the agenda; and I mean life as in
> life: a close friend of mine is in the process of fork()-ing ;-)

I'm here (east coast America, near Washington, DC) for the weekend,
and Monday (Martin Luther King holiday) and Tuesday (Barack Obama
inauguration; nobody in their right mind will leave their house around
here, due to the millions of visitors :).

I can work on Debian, Windows, and Cygwin.

Where is the IRC? I can't find instructions for that on the mtn wiki
(I _really_ miss the search facility there!). I have Jabber with an
IRC backend installed on my Debian box; where do I point it?

>> For the summit, I have only one goal: preparing nvm.stripped for landing.
>
> As a FreeBSD Port mantainer and CygWin package mantainer, I really look
> forward it; I never liked the "we include it all" approach much, even if
> I can appreciate its reasons...
>
>> First of all, that involves more testing. I've successfully compiled
>> nvm.stripped on these systems already:
>>  * Debian + Ubuntu Linux
>>  * FreeBSD (6.4 and 7.1), Lapo reported 7.0 as well
>>  * Gentoo Hardened
>
> I'll be testing CygWin shortly.

Do we have updated/test installation instructions for nvm.stripped?
I suggest we start one in monotone/INSTALL.windows, INSTALL.cygwin

I understand the basic idea is to unbundle the various "other
packages" from monotone. That means we need to install them manually
on Windows, and maybe thru the Cygwin installer for Cygwin. Either
way, we need detailed instructions.

In particular, a canonical source for each package, and a list of
versions of each package that are known to work.

>> As we have reports from users on Windows and Solaris, I want to try
>> these as well, before landing. I've virtual machines in place, but their
>> lack of a usable packaging system (and lack of a real shell with ssh, in
>> case of windows) makes testing pretty hard. Help with that is greatly
>> appreciated.
>
> Cygwin is a life-saver in that regard.
> I use its rxvt-zsh even to execute plain win32 commands...
> I can't suffer cmd.exe lack of features!

MSYS/Mingw also works, and is necessary for a non-Cygwin Win32 build.

I managed to get a Windows buildbot working once; the instructions are
on the wiki somewhere. They should probably be moved to
INSTALL.windows.buildbot, or something.

-- 
-- Stephe


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Re: mtnopt manpage

2009-01-17 Thread Lapo Luchini
Zack Weinberg wrote:
> We need a manpage for mtnopt, if only so lintian will stop complaining
> about there not being one ;-) 

Still lacking...

> I can see what it does, but I don't
> know what the intended uses and so on are.

Same here.

OK, digging in the log to the first commit I know know a little more:

-
Revision: 484bda8a6268214180bdac5dd857ab4ff4174976
Ancestor: 217d9b0e270ecc5bcbe7acb30297dee64afab8c6
Author: Richard Levitte 
Date: 2008-04-25T11:19:36
Branch: net.venge.monotone

Added files:
contrib/mtnopt
Modified attrs:
contrib/mtnopt

ChangeLog:

* contrib/mtnopt: New script to extract values from _MTN/options
in a form that a shell can understand.  It works in two modes, one
that outputs shell variable definitions, suitable for operations
such as "eval `mtnopt`", and one that simply outputs the value of
the keys.  There are options available to say what _MTN directory
to use as well as to specify exactly what keys shouls be output.

-- 
Lapo Luchini - http://lapo.it/

“I do engineering, not religion.” (Daniel J. Bernstein)



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Re: Mini Summit 2009

2009-01-17 Thread Lapo Luchini
Markus Wanner wrote:
> Welcome to the Monotone Mini Summit 2009,
> 
> I will be around mostly, but also have important non-mtn things on my
> agenda (I'm looking for work in Zurich).

I'm here 'till 18:00 CET (more or less) both today and tomorrow unless
some real life decides to intrude in the agenda; and I mean life as in
life: a close friend of mine is in the process of fork()-ing ;-)

> For the summit, I have only one goal: preparing nvm.stripped for landing.

As a FreeBSD Port mantainer and CygWin package mantainer, I really look
forward it; I never liked the "we include it all" approach much, even if
I can appreciate its reasons...

> First of all, that involves more testing. I've successfully compiled
> nvm.stripped on these systems already:
>  * Debian + Ubuntu Linux
>  * FreeBSD (6.4 and 7.1), Lapo reported 7.0 as well
>  * Gentoo Hardened

I'll be testing CygWin shortly.

> As we have reports from users on Windows and Solaris, I want to try
> these as well, before landing. I've virtual machines in place, but their
> lack of a usable packaging system (and lack of a real shell with ssh, in
> case of windows) makes testing pretty hard. Help with that is greatly
> appreciated.

Cygwin is a life-saver in that regard.
I use its rxvt-zsh even to execute plain win32 commands...
I can't suffer cmd.exe lack of features!

If you have doubts regarding CygWin, ask me (I'm on IRC right now, but
also in mail or on Jabber...).

>  * And second... enjoy the summit!
> 
> Happy hacking

Yup ;-)

My personal plans include continuing work on nvm.lapo.selectors, but
that's lower priority than things we can do better as a summit-crowd, as
I can work on that anytime else too.

PS: I guess the american part of the globe will not be online for at
least 4 more hours...

-- 
Lapo Luchini - http://lapo.it/

“The Magic Words are Squeamish Ossifrage” (Ron Rivest, RSA-129
challenge, 1977)



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Mini Summit 2009

2009-01-17 Thread Markus Wanner
Welcome to the Monotone Mini Summit 2009,

I will be around mostly, but also have important non-mtn things on my
agenda (I'm looking for work in Zurich). For the summit, I have only one
goal: preparing nvm.stripped for landing.

First of all, that involves more testing. I've successfully compiled
nvm.stripped on these systems already:
 * Debian + Ubuntu Linux
 * FreeBSD (6.4 and 7.1), Lapo reported 7.0 as well
 * Gentoo Hardened

As we have reports from users on Windows and Solaris, I want to try
these as well, before landing. I've virtual machines in place, but their
lack of a usable packaging system (and lack of a real shell with ssh, in
case of windows) makes testing pretty hard. Help with that is greatly
appreciated.


Second, I'd like to get the buildbot system into better shape. As
pointed out above, I've virtual machines for all the systems mentioned
so far. I've setup three buildbot slaves at work recently, so turning my
virtual machines into buildbots for monotone should be doable within
reasonable time. (However, as those virtual thingies consume memory, I
might not be able to run all of them all the time. My host server has 6
GiB of memory, the virtuals mostly have 0.5 GiB - not sure if that's
sufficient for compiling monotone w/o having to swap)


As for the summit, I'm asking for two things:

 * Please keep discussions on the mailing list, on IRC or if you
absolutely need to on skype. But please don't abuse the wiki for that.
It's utterly hard to tell who said what there and close to impossible to
browse that offline (unlike plain mails). (Original question: why
submitting ideas for this summit there? Who's the "I" who proposed the
"branch rename" command?...)

 * And second... enjoy the summit!

Happy hacking

Markus Wanner


___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Re: heads up on nvm.stripped

2009-01-17 Thread Lapo Luchini
Markus Wanner wrote:
>> nice sh -c 'SHELL=/bin/sh ; autoreconf -i &&
>> CXXFLAGS="-I/usr/local/include" LUA_CFLAGS="-I/usr/local/include/lua51"
>> LUA_LIBS="-llua-5.1" LDFLAGS="-L/usr/local/lib" ./configure && gmake'
> 
> Aha, so it was lua, which posed some problems.
> 
> What's the purpose of "SHELL=/bin/sh"?  Is that required if there's
> already a 'configure' (i.e. as in the tarball)?

I'm not really sure about that, but my shell of choice is zsh and
without that configure would sometimes give an error reported by zsh...
I guess somewhere it assumes the shell to be sh and doesn't check, or
something.
The internals of the compiled configure are a bit scary and that
empirical solution worked well enough to satiate my curiosity ;)

I'll check again in the future maybe, but I guess it's something
specific to my installation and you can probably avoid it.

>> Actually lua installs a .pc for pkg-config, but it's versioned:
>> % pkg_info -L lua-5.1.3_3|fgrep .pc
>> /usr/local/libdata/pkgconfig/lua-5.1.pc
> 
> Hm.. on Debian it's just "lua5.1". Strange.

I guess the "correct" name would be just "lua", but when two version are
not compatible the port/package-maintainers need to come up with a
different name, not necessarily consistent across systems...

> However, it's simple enough to teach the lua.m4 script. Done in
> 2a7c7d45284e1eedee141f5627f612a954c6eb9d.
> 
> Not having to use flags is even easier, no?

Of course ;-)

> Having a monotone ports package for FreeBSD would be great!
> And along the way, update botan's port to 1.8.x as well... :-)

Hey, we do have monotone in the Ports since quite a few, since well
before my arrival in fact ;-)
(and packages get compiled automatically when there is a working port)

http://www.freshports.org/devel/monotone/

I'm looking forward to "stripped" landing!

-- 
Lapo Luchini - http://lapo.it/

“The sky above the port was the color of television, tuned to a dead
channel.” (William Gibson, "Neuromancer")



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel