Re: [Monotone-devel] Re: SPKI/SDSI

2006-02-11 Thread Nathaniel Smith
On Wed, Feb 08, 2006 at 03:35:25PM +, Bruce Stephens wrote:
 Nathaniel Smith [EMAIL PROTECTED] writes:
 
  I've been reading RFC 2693 [ftp://ftp.isi.edu/in-notes/rfc2693.txt] to
  prepare for CodeCon, so I can talk about plans for trust management
  without seeming totally ignorant of relevant literature :-).  It's an
  interesting read; I think there are enough differences in problem
  domain to make it non-ideal for monotone, but it's a good basis for
  discussion.  So, good thing to read (or at least skim) at some point
  if people are interested in this stuff.
 
 Also http://www.crypto.com/trustmgt/kn.html is interesting.
 
 I must admit all these things feel like nifty technical solutions in
 search of too few actual problems.

 In theory I think there's lots of things you could do in a uniform way
 if everyone would just agree on one framework to use, but in reality
 almost all specific problems seem adequately (if not completely)
 solvable using simpler (if specific) solutions.  (And so long as
 there's no obvious winner, it's not worth anyone going with a system
 that really could do everything.)

I'm not sure what has held back SPKI uptake in practice.  The web site
actually suggests that nothing has, it's just that it's a set of
principles rather than a single spec that everyone has to implement,
so all the people working on SPKI are now just writing systems that do
what they need to, instead of trumpeting their adherence to SPKI
canon.

This seems like a feature; if you read that RFC, they lay out how to
interpret PGP keys, X.509 keys, etc., as instances of SPKI certs.
They seem very aware that any solution that requires universal
adoption is no solution at all, and to have at least attempted to
target their design to make this irrelevant.

Regardless, though, _this_ part is all irrelevant to monotone :-).

 My guess is that'll be so for whatever problems there are for
 monotone: it'll be not too bad to add one or two features, and now and
 again add an epicycle or two, and the immediate requirements can be
 satisfied.
 
 As a specific example, get_revision_cert_trust would probably be more
 useful if it had access to all the certs for a revision.  I could
 imagine wanting to ignore tags other than my own on my own branches,
 and probably there are other examples.  Maybe similarly for
 accept_testresult_change.  

Personally, I'm pretty darn convinced that get_revision_cert_trust is
a dead end.  Especially it just doesn't provide any way to get one of
the most basic things you expect out of a VCS: some way for a core
group of developers can manage commit access (really cert trust and
perhaps push access).  _Everyone_ has policy on who can change what
how, and in practice telling every user to work out their own rules,
while flexible, is completely... well, just way too clunky to work
:-).

(If anyone disagrees, then could I ask you to volunteer to go around
and get everyone on a project to manually update their hooks the next
time someone joins the project?  Thanks ;-).)

We know how to solve this; the full design of SPKI/SDSI is way
overkill and not appropriate, but some of the basic principles are
useful to think about.  We basically think we know how to solve
monotone's problem (the trust branch idea, for those who remember
it), and it's basically just the technique in 7.7 of the above RFC
(though we came up with it independently), plus some monotone specific
gunk to make it fit in nicely.

The really nice thing about this chunk of extra architecture is that
it also gives you natural solutions for such things as:
  * key lifecycle (including retiring old keys and making new ones
with the same name as the old one)
  * branch naming (and renaming)
  * a natural place for a project to store project-general data.  say,
for instance, darcs's famous email-address-in-the-repo, so one
could in principle say monotone email-changes and have local
changes magically bundled off to the appropriate list.
and so on :-)

-- Nathaniel

-- 
But in Middle-earth, the distinct accusative case disappeared from
the speech of the Noldor (such things happen when you are busy
fighting Orcs, Balrogs, and Dragons).


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


[Monotone-devel] [PATCH] validation hook documentation

2006-02-11 Thread Blake Kaplan
Nathaniel asked me to document the commit message validation hook that
I added, so here's a patch to do that. It also changes the lua to
reflect what really gets passed in. I'll implement the rest of his
suggestions in another patch soon.
--
Blake Kaplan
# 
# old_revision [40f0799799e84361c24e9f0d23d271fb4308f7f8]
# 
# patch monotone.texi
#  from [200d3e76ba97251314502d5e9dd0bdb1215289cb]
#to [355d07f84caee318dd69f37ff6274842ca2d2c70]
# 
# patch std_hooks.lua
#  from [259f2956124c69bd0f616943ad64663f67213cd6]
#to [8f01e338e8056c62de500694210fd22dacac6122]
# 

--- monotone.texi	200d3e76ba97251314502d5e9dd0bdb1215289cb
+++ monotone.texi	355d07f84caee318dd69f37ff6274842ca2d2c70
@@ -6690,6 +6690,25 @@
 
 @end ftable
 
[EMAIL PROTECTED] Validation Hooks
+
+If there is a policy decision to make, Monotone defines certain hooks to
+allow a client to validate or reject certain behaviors.
+
[EMAIL PROTECTED] @code
[EMAIL PROTECTED] validate_commit_message (@var{message}, @var{changeset_text})
+
+This hook is called after the user has entered his/her commit message.
[EMAIL PROTECTED] is the commit message that the user has entered and 
[EMAIL PROTECTED] is the full text of the changes for this revision,
+which can be parsed with the parse_basic_io function. If the hook finds the
+commit message satisfactory, it can return @code{true, }. If it finds
+fault, then it can return @code{false, reason} where @var{reason} is the
+reason the message was rejected. By default, this hook rejects empty log
+messages.
+
[EMAIL PROTECTED] ftable
+
 @page
 @node   Additional Lua Functions
 @section Additional Lua Functions

--- std_hooks.lua	259f2956124c69bd0f616943ad64663f67213cd6
+++ std_hooks.lua	8f01e338e8056c62de500694210fd22dacac6122
@@ -706,7 +706,7 @@
return matches
 end
 
-function validate_commit_message(message, new_manifest_id)
+function validate_commit_message(message, changeset_text)
 if (message == ) then
 return false, empty messages aren't allowed
 end

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


Re: [Monotone-devel] [sqlite] disk locality (and delta storage)

2006-02-11 Thread Daniel Carosone
On Fri, Feb 10, 2006 at 07:06:27PM -0500, [EMAIL PROTECTED] wrote:
 Daniel Carosone [EMAIL PROTECTED] wrote:
  
  It seems a little odd to me to build a centralised, online
  information system for tracking state and documenting activity around
  and about source code in a distributed and disconnected VCS.  
 
 Ah yes, you're right.  But in the system I envision, the wiki
 and bug-tracking are also decentralized, disconnected, and
 distributed.

Now I'm *very* interested :)

  Wiki pages doesn't seem so hard, they're pretty much text documents
  stored in a VCS anyway. 
 
 There are some complications.  Each wiki page acts if it where
 its own independent project or branch.  

Hm. I'm not sure I see that as the case; if I update several pages
together and change the linkage between them, I could well want a
single commit revision across the several topic pages.  But I've not
given it much thought..  it probably does work close to that way (a
commit per page update) when the editing is being done via html forms.

The wiki I'm most familiar with, in implementation, is Twiki (and even
then, only vaguely).  It's a web front-end onto RCS files that hold
the wiki text.  If you have access to the server, there's nothing
stopping you doing your own checkout/edit/checkin, for example if you
find the browser editing panel restrictive for what you need to do.

So I just figured wiki content in monotone might as well work pretty
much the same way, with the webserver as one committer.

 And then you probably want
 some way see all current leaves and to do merges from the web
 interface.  

Yes. A nice web-based merge UI is one thing you'd want, but it needn't
be there in the first instance.  You're going to need some rules and
mechanisms for when the webserver will update as new content arrives
in the database via netsync; in the first instance you could rely on
developers to merge and provide the webserver with a unique head.
Until that's resolved, the webserver and its users could just keep
committing along the line they started with.

If you start running multiple web servers as semi-independent mirrors
(not counting 'personal' ones, as below), then you get to the point of
needing to provide web users with more UI to deal with choosing and
merging heads.  Much of that UI is probably very much like the UI you
need to give them to navigate source content, viewmtn-style.

 If you intend your system to be publically accessible, then
 you will also need some mechanism to delete (or at least 
 permanently hide from public view) the spam that miscreants
 occasionally post on wiki pages and sometimes also on tickets.
 Some kind of death cert perhaps.

Yes, but I think this applies for monotone projects that accept
anonymous revisions, regardless of whether the content is a wiki page
or anything else.

  Bug tracking state would require a little
  more smarts, with suitable text formats stored in the VCS and
  code/hooks to assist in making sane merges between multiple heads of a
  given ticket, but even that doesn't seem terribly hard.
 
 My thinking about tickets is that each change to a ticket
 is just a small, signed, immutable record (like a cert)
 that contains a variable number of name/value pairs.  The
 names are things like title, description, status,
 assigned-to, etc.  To reconstruct the current state of
 a ticket, you sort all the pieces by their creation time
 (their actual creation time, not the time they happened to
 arrive at your database) and read through them one by one.
 Values overwrite prior values with the same name.  So
 in the end, you have one value for each field name - and
 that is the current state of your ticket.

I wouldn't use creation time, datestamps are unreliable; even without
someone issuing malicious timestamps, there are sometimes good uses
for dating a revision in the past, or even possibly in the future.
(Ok, I can't think of a good case for future dates right now, but I
have quite valid ones for past-dating certs, as well as the cvs_import
case).

Instead, I'd evisaged using the revision DAG to let one state replace
a previous one (ie, topological sort in your algorithm above).  When
merging paths that have conflicting values, it's probably best for the
user to choose the correct one, and place that value on the merge
node.

By which time, you might as well just store the ticket as structured
content, perhaps with a commit-hook to validate well-formedness and
other constraints.

 This approach gives you automatic merging and a complete
 change history/audit trail. 

It does give you simpler merging, but perhaps too simple? Overwiting
values like this mightn't be the best thing in some cases.. and it
means people can go back and change history.

Using the DAG means that a bug can be closed on one branch, (or even
one divergent head/path within a branch) but still open on another.
Which seems exactly correct, to me.

In any case, just like for actual code, there will be some kinds of

Re: [Monotone-devel] mtsh, monotree, monotone.el, etc.

2006-02-11 Thread Olivier Andrieu
 Bruce Stephens [Wednesday 8 February 2006] :
  I notice contrib/monotone-nav.el hasn't seen much modification, so am
  I right to guess that it's not being used much?

Nevers used it myself, I don't even know what i's supposed to do :)

  contrib/monotone.el seems to work fine, and I've been using it
  recently now and again.  Are there things missing from it?  I feel
  there probably are things it could usefully do, but I find it hard
  to imagine specific things I could add.  So maybe that's a sign
  that it's sufficient.

I initially wrote monotone.el, then someone (Harley Gorrell
[EMAIL PROTECTED]) far more knowledgeable than me about elisp
development started rewriting this file and added
monotone-nav.el. Unfortunately he hasn't contributed since April.
Personally, I prefer my version of monotone.el, I just have feeling it
works better :) 

Anyway, having a close look at monotone.el and cleaning it up is on my
list of things to do. I'm interested if you have
remarks/comments/opinions on monotone.el. I need to have a look at
this too: http://wiki.gnuarch.org/xtla#DVC

  I *do* use contrib/monotone.zsh_completion all the time.  I'll send a
  patch updating it once rosters is more officially stable.

Right, monotone.bash_completion needs to be updated too.

-- 
   Olivier


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


Re: [Monotone-devel] Re: [sqlite] disk locality (and delta storage)

2006-02-11 Thread Nathaniel Smith
Thanks for this detailed email!  I've been a bit crazy with codecon
the last week, and most of what I have to say is hmm, lots to think
about here, so, yeah :-).

I did want to reply to your VCS system comments, though:

On Tue, Feb 07, 2006 at 10:17:54AM -0500, [EMAIL PROTECTED] wrote:
 What I'm looking for is a VCS + bug-tracker + wiki that I can just
 drop into a cgi-bin of some low cost web hosting site (like Hurricane
 Electric, which I notice we both use) and have a ready-to-roll project
 management system with no setup or other details to worry about.  Kind
 of a sourceforge-in-a-box, only a lot better than sourceforge.  I'm

That sounds awesome.  I'm _really_ interested in this area myself,
actually, though the stuff I've been playing with is somewhat
orthogonal.  (Nothing really working yet, but playing with ways to
improve data integration -- by folding in even more, like IRC logs and
mailing list archives.  These kinds of things require a much heavier
server architecture, though, so sort of exploring different parts of
the design space.)

 looking for something like monotone with CVSTrac enhancements that
 works over HTTP.  Nothing like that currently exists, I'm afraid, 
 so I've been working on my own.

 Yes, it is a big job, though perhaps not any bigger than writing 
 an SQL database engine ;-)

I can't say monotone works with CVSTrac, but then, I assume your
system doesn't either off the bat :-).  And, monotone can work over
HTTP -- or at least, _I_ say it can :-).  There is a branch where I
worked out a proof-of-concept implementation of this:
  http://viewmtn.angrygoats.net/branch.psp?branch=net.venge.monotone.dumb
It's as a python script that does some rather Clever Things.  I don't
have time to explain the algorithm in detail now, but it basically
supports monotone's full push/pull/sync semantics, you can talk to one
friend's repo and then talk to another's, etc., that all just works;
and it should be transactional (except that in some rare cases someone
has to rollback by hand; in the dumb remove filesystem case, readers
can't in general do a rollback, and renames can't in general be
atomic, so if you're extremely unlikely you might get wedged).  And it
should be really speedy on top of some well done network backends (you
really want things like pipelining).  If you do take a look at it,
there's basically dumb.py doing monotone glue, fs.py giving the
generic filesystem interface that needs to be implemented for each
transport, and merkle_dir.py in between, where all the magic lives.

I haven't actually convinced anyone yet to take care of it and polish
it up, though (or rewrite more sanely, or whatever), so it's just sort
of been sitting there, waiting forlornly for someone who will give it
love...

 Monotone is my favorite of the current crop of VCSes by the way.
 It has 80% of what I am looking for.  What I'm really after is 
 a better monotone.  I have been greatly inspired by your work,
 as have others, I notice.

Thank you very much!  I would be interested in hearing what you think
of as the last 20%, beyond HTTP support.

I also innocently observe that if what you want is a better monotone,
the quickest route may be to... make monotone better ;-).

  While size is definitely not everything -- I doubt anyone notices 10%
  here or there -- a factor of 2-3x is probably going to be hard to
  sell.  Unfortunately, since it's a nice scheme.
 
 The CVS repository for SQLite is 15MiB.  Under a baseline+delta schema
 it would grow to (perhaps) 45MiB.  The cheapest account on Hurricane
 Electric includes 1GiB of storage.  Why should I care about the extra
 30MiB?

Well, because there are enough people out there with gig-sized source
checkouts.  (Yeah, not even history, but... checkouts.)  Or hundreds
and hundreds of thousands of commits (gcc, mozilla, linux kernel...).
While there's definitely value to a tool that works well for the 95%
of projects that are not that big, we really would like to have a
single tool that 100% of projects can viably use.

The extraordinarily intense competition in the VCS field is also a
factor; note that mercurial scales to those projects just fine,
without excessive space usage, and is experiencing great uptake on
small projects too -- so since we think we offer some other
compelling advantages, we really would like to compete directly across
the whole range :-).

-- Nathaniel

-- 
In mathematics, it's not enough to read the words
you have to hear the music


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


[Monotone-devel] Re: SPKI/SDSI

2006-02-11 Thread Bruce Stephens
Nathaniel Smith [EMAIL PROTECTED] writes:

[...]

 The really nice thing about this chunk of extra architecture is that
 it also gives you natural solutions for such things as:
   * key lifecycle (including retiring old keys and making new ones
 with the same name as the old one)
   * branch naming (and renaming)
   * a natural place for a project to store project-general data.  say,
 for instance, darcs's famous email-address-in-the-repo, so one
 could in principle say monotone email-changes and have local
 changes magically bundled off to the appropriate list.
 and so on :-)

Yes indeed.  And you didn't mention another big one, which is that
other people have already designed it.


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


Re: [Monotone-devel] Approval revisited...

2006-02-11 Thread Justin Patrin
On 2/11/06, Nathaniel Smith [EMAIL PROTECTED] wrote:
 On Fri, Feb 10, 2006 at 05:25:36PM +0100, Richard Levitte - VMS Whacker wrote:
  I'm taking a look at the current revision approval possibilities, and
  there are things I don't quite understand.  Also, it looks like this
  hasn't been looked at for ages.

 It hasn't.  It was sort of stuck in as a statement of intention,
 before anyone realized _quite_ how long it would take to get a solid
 VCS foundation so we could get back to the actual _workflow_ stuff
 that was the original goal...

 I don't know that there's a lot of point in trying to patch this up
 piecemeal; we don't have any coherent model for how review would work
 right now, and fiddling with the trust hook (which is also one of
 these vestigial has-been-there-forever, never-really-designed things)
 doesn't seem like it will really get us there?

 Personally, I think the functionality of 'disapprove' should move to
 'revert' ('revert -r REV [RESTRICTION]; commit'), and 'approve' could
 just go away, or stay on until we have a real story, or whatever.


The name 'revert' of course makes sense for this, but this will also
clash with the 'revert' used to revert a change in a working copy

 The real answer is the trust branch stuff, which is actually getting
 much closer now that we have rosters in and are starting to get handle
 on how we can get over the speed problems we've been facing forever.
 It will be nice if we can stop fighting fires for a bit... *knocks on
 wood*



--
Justin Patrin


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


Re: [Monotone-devel] [sqlite] disk locality (and delta storage)

2006-02-11 Thread Nathaniel Smith
On Fri, Feb 10, 2006 at 07:06:27PM -0500, [EMAIL PROTECTED] wrote:
 Daniel Carosone [EMAIL PROTECTED] wrote:
  Wiki pages doesn't seem so hard, they're pretty much text documents
  stored in a VCS anyway. 
 
 There are some complications.  Each wiki page acts if it where
 its own independent project or branch.  And then you probably want
 some way see all current leaves and to do merges from the web
 interface.  

 If you intend your system to be publically accessible, then
 you will also need some mechanism to delete (or at least 
 permanently hide from public view) the spam that miscreants
 occasionally post on wiki pages and sometimes also on tickets.
 Some kind of death cert perhaps.

These all seem reasonably straightforward; basically just UI issues.

The trickiest bit is the making each page independent bit... but you
can just do that by having each page be a single file named page.txt
in its own branch.  Alternatively, sometimes it is very nice to allow
renaming in a wiki.  (I have definitely wanted this feature, when I
realized that the spec I have been working out on a wiki page actually
should be called something different than what it currently is.)  You
can allow this pretty straightforwardly even in the distributed wiki
case if you just use monotone's rename support...

  Bug tracking state would require a little
  more smarts, with suitable text formats stored in the VCS and
  code/hooks to assist in making sane merges between multiple heads of a
  given ticket, but even that doesn't seem terribly hard.
 
 My thinking about tickets is that each change to a ticket
 is just a small, signed, immutable record (like a cert)
 that contains a variable number of name/value pairs.  The
 names are things like title, description, status,
 assigned-to, etc.  To reconstruct the current state of
 a ticket, you sort all the pieces by their creation time
 (their actual creation time, not the time they happened to
 arrive at your database) and read through them one by one.
 Values overwrite prior values with the same name.  So
 in the end, you have one value for each field name - and
 that is the current state of your ticket.

You seem to be reinventing history tracking with certs.

It seems a lot simpler to just make tickets, like, a text file, and
then use the existing history tracking tools.  They're quite tuned and
involve some non-obvious bits.  In particular, compared to this
scheme, they're insensitive to clock skew, they provide real merging
(in your scheme, if I change a field locally, and you change the same
field locally, then whichever of us has our clock set later at that
time will silently clobber the other person), and users can
investigate the history of a ticket using normal history browsing
tools...

 It is also very useful to have certs that record a link 
 between a revision and a ticket.  In this way you can record 
 that a bug was introduced by, or fixed by, a particular 
 revision.  The linkage between tickets and revisions has 
 proven to be particularly valuable in CVSTrac.

Indeed!  Enabling this kind of workflow integration is _exactly_ why
we have this generic cert thing built in.  No-one's done much with it
yet, though, so really we don't even know how far the possibilities go
-- so I get all excited when someone does :-).

 Once you have cross linking between revisions and tickets,
 if you add a google-like search you then have a very powerful
 system for doing source tree archeological work.  This comes
 up a lot in maintaining SQLite.  Somebody on the web reports
 a problem.  I have some vague memory of fixing a similar
 problem 9 months ago, but do not recall where it was or how
 I fixed it.  By using the search feature of CVSTrac together
 with the links between tickets and check-in comments, I can
 quickly find the historical problem and pinpoint exactly when
 and how the problem was fixed.  Then post a URL to the specific
 ticket that described the problem and the specific revision that
 fixed it.

Yep!  Monotone has much more structured information than CVS, and it's
much easier to get at; one can get at all sorts of things.  You can
track not just the list of commits, but things like branches, figure
out whether they're merged or not yet, see which branches work is
occurring on...

Or how about another cool use of certs:
  http://mt.xaraya.com/com.xaraya.core/index.psp


I think the move from CVS to systems with simpler, saner data models
opens up huge opportunities for better visualization, data mining,
data navigation, community awareness, workflow management... sadly, I
never get to work on this, because I end up spending my time trying to
make the basic pieces just work :-).  But I can't wait to see what
other people come up with, and can cheer loudly while they do...

-- Nathaniel

-- 
So let us espouse a less contested notion of truth and falsehood, even
if it is philosophically debatable (if we listen to philosophers, we
must debate everything, and there would be 

Re: [Monotone-devel] [sqlite] disk locality (and delta storage)

2006-02-11 Thread drh
Daniel Carosone [EMAIL PROTECTED] wrote:
 
  Just type (for example):
  
 monotone httpserver 
  
  and then point your webbrowser at 127.0.0.1.
 
 My personal favourite is jetty in Java for this kind of thing; I'm not
 sure monotone itself should grow a http server :) 

The built-in webserver need not have all the features or
performance of apache.  Something very simple will suffice.
CVSTrac has the ability to act as its own web server, or 
to let inetd be the server that calls CVSTrac on each 
request.  Both features combined are implemented in less 
than 150 lines of C code.

To see the code visit
http://www.cvstrac.org/cvstrac/getfile/cvstrac/cgi.c
Search for cgi_http_server and cgi_handle_http_request.

--
D. Richard Hipp   [EMAIL PROTECTED]



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


Re: [Monotone-devel] [PATCH] validation hook documentation

2006-02-11 Thread Richard Levitte - VMS Whacker
In message [EMAIL PROTECTED] on Sat, 11 Feb 2006 03:07:02 -0800, Blake Kaplan 
[EMAIL PROTECTED] said:

mrbkap Nathaniel asked me to document the commit message validation
mrbkap hook that I added, so here's a patch to do that. It also
mrbkap changes the lua to reflect what really gets passed in. I'll
mrbkap implement the rest of his suggestions in another patch soon.

Applied, committed and pushed.

Cheers,
Richard

-
Please consider sponsoring my work on free software.
See http://www.free.lp.se/sponsoring.html for details.

-- 
Richard Levitte [EMAIL PROTECTED]
http://richard.levitte.org/

When I became a man I put away childish things, including
 the fear of childishness and the desire to be very grown up.
-- C.S. Lewis


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


Re: [Monotone-devel] Approval revisited...

2006-02-11 Thread Daniel Carosone
On Sat, Feb 11, 2006 at 03:37:01AM -0800, Justin Patrin wrote:
  Personally, I think the functionality of 'disapprove' should move to
  'revert' ('revert -r REV [RESTRICTION]; commit'), and 'approve' could
  just go away, or stay on until we have a real story, or whatever.
 
 The name 'revert' of course makes sense for this, but this will also
 clash with the 'revert' used to revert a change in a working copy

This is exactly the same command.  Notice the -r REV, which means to
revert the [RESTRICTION] files to as they were in REV (as opposed to
the BASE rev as default), and a commit after.  Thus a revert is just
like an update that doesn't change MT/revision, so diffs and commits
are still relative to the original BASE.

This works fine if your BASE is the revision where the 'bad' change
was first made, or at least some near descendent before other changes
have been made in the relevant files too.  If intervening changes have
been made, the current functionality of 'disapprove' is to apply a
reverse patch against the current head.

That's handy and convenient, but I actually think the more appropriate
way to achieve this is to actually go back up the graph and checkout
the original damaged BASE rev, revert and commit as above, and then
merge the new head with the anti-change with the current head.

The resulting graph just makes more sense: it connects the bad change
with the repair, and shows you the alternate path in between that's
affected by the bad code.

So, yes please.

--
Dan.


pgp7ojUvMs3r0.pgp
Description: PGP signature
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Approval revisited...

2006-02-11 Thread Richard Levitte - VMS Whacker
In message [EMAIL PROTECTED] on Sun, 12 Feb 2006 09:41:14 +1100, Daniel 
Carosone [EMAIL PROTECTED] said:

dan On Sat, Feb 11, 2006 at 03:37:01AM -0800, Justin Patrin wrote:
dan   Personally, I think the functionality of 'disapprove' should
dan   move to 'revert' ('revert -r REV [RESTRICTION]; commit'), and
dan   'approve' could just go away, or stay on until we have a real
dan   story, or whatever.
dan  
dan  The name 'revert' of course makes sense for this, but this will
dan  also clash with the 'revert' used to revert a change in a
dan  working copy
dan 
dan This is exactly the same command.

No.

dan Notice the -r REV, which means to revert the [RESTRICTION] files
dan to as they were in REV (as opposed to the BASE rev as default),
dan and a commit after.  Thus a revert is just like an update that
dan doesn't change MT/revision, so diffs and commits are still
dan relative to the original BASE.
dan 
dan This works fine if your BASE is the revision where the 'bad'
dan change was first made, or at least some near descendent before
dan other changes have been made in the relevant files too.  If
dan intervening changes have been made, the current functionality of
dan 'disapprove' is to apply a reverse patch against the current
dan head.

Incorrect.  disapprove does what you describe it should do, as
follows, except for the merge that you have to do separately:

dan That's handy and convenient, but I actually think the more
dan appropriate way to achieve this is to actually go back up the
dan graph and checkout the original damaged BASE rev, revert and
dan commit as above, and then merge the new head with the anti-change
dan with the current head.
dan 
dan The resulting graph just makes more sense: it connects the bad
dan change with the repair, and shows you the alternate path in
dan between that's affected by the bad code.

I entirely agree with that last remark, and since that's what
disapprove does (well, except for the merge), why should we change it,
and even more, why should we mix it up with another command that does
something different altogether?

dan So, yes please.

My vote goes to no!  pretty please, no!

Cheers,
Richard

-
Please consider sponsoring my work on free software.
See http://www.free.lp.se/sponsoring.html for details.

-- 
Richard Levitte [EMAIL PROTECTED]
http://richard.levitte.org/

When I became a man I put away childish things, including
 the fear of childishness and the desire to be very grown up.
-- C.S. Lewis


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