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

2006-02-12 Thread Daniel Carosone
On Sun, Feb 12, 2006 at 07:47:36AM +0100, Richard Levitte - VMS Whacker wrote:
 Incorrect.  disapprove does what you describe it should do, as
 follows, except for the merge that you have to do separately:

Oh. Er. Um. Well... oops!

I blame a flaky memory, and perhaps the fact that the only time I
actually used this so far, it was probably to 'disapprove' something
that was at least a local head already.  Sorry about that.

Regardless of what happens to 'disapprove', which at the very least is
poorly named, revert -r does sound useful in its own right.  For
example, in a workspace merge, I could use it to pick files for the
merge result as they were in one or the other head being merged.

--
Dan.

pgp7UF7OqyNgP.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 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] 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


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

2006-02-10 Thread Timothy Brownawell
On Fri, 2006-02-10 at 19:26 +0100, Richard Levitte - VMS Whacker wrote:
 I've been rethinking.  Ignore that, changing the approve command will
 not really make things better, because then we need to check that the
 value of an approved cert matches any available branch cert or the
 current branch, and that would require something quite a bit more
 complex than the current get_revision_cert_trust hook.
 
 What would be needed is perhaps have approve avoid adding a branch
 cert for a branch the revision isn't already in...

Um, I think that's the entire purpose of approve. It basically says, I,
so-and-so, approve revision  for inclusion into branch
....

Tim




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


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

2006-02-10 Thread Richard Levitte - VMS Whacker
In message [EMAIL PROTECTED] on Fri, 10 Feb 2006 15:15:13 -0600, Timothy 
Brownawell [EMAIL PROTECTED] said:

tbrownaw On Fri, 2006-02-10 at 19:26 +0100, Richard Levitte - VMS Whacker 
wrote:
tbrownaw  What would be needed is perhaps have approve avoid adding
tbrownaw  a branch cert for a branch the revision isn't already in...
tbrownaw 
tbrownaw Um, I think that's the entire purpose of approve. It
tbrownaw basically says, I, so-and-so, approve revision  for
tbrownaw inclusion into branch ....

Yeah, the only problem, as far as I see it, is that approve takes
--branch, so for example, I could very easily say something like:

monotone approve --branch=net.venge.monotone.approved.linux \
6e87084a87413eed2c31100054ff8d5045f0be4d

If that gets repeated a few, do you know what kind of graph that
branch (which I invented on the spot) would have?  Maybe I worry too
much, but consider if someone mistakenly connects the revision to
another unrelated branch by using approve unwisely?

I think approve should at least warn if the given branch doesn't match
one of the branch certs already attached to the revision.

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-10 Thread Timothy Brownawell
On Fri, 2006-02-10 at 22:39 +0100, Richard Levitte - VMS Whacker wrote:
 In message [EMAIL PROTECTED] on Fri, 10 Feb 2006 15:15:13 -0600, Timothy 
 Brownawell [EMAIL PROTECTED] said:
 
 tbrownaw On Fri, 2006-02-10 at 19:26 +0100, Richard Levitte - VMS Whacker 
 wrote:
 tbrownaw  What would be needed is perhaps have approve avoid adding
 tbrownaw  a branch cert for a branch the revision isn't already in...
 tbrownaw 
 tbrownaw Um, I think that's the entire purpose of approve. It
 tbrownaw basically says, I, so-and-so, approve revision  for
 tbrownaw inclusion into branch ....
 
 Yeah, the only problem, as far as I see it, is that approve takes
 --branch, so for example, I could very easily say something like:
 
 monotone approve --branch=net.venge.monotone.approved.linux \
   6e87084a87413eed2c31100054ff8d5045f0be4d
 
 If that gets repeated a few, do you know what kind of graph that
 branch (which I invented on the spot) would have? 

Hmm? It would have the shape of whatever part of the revision history
graph got put into it.

  Maybe I worry too
 much, but consider if someone mistakenly connects the revision to
 another unrelated branch by using approve unwisely?

Couldn't they do the same by using commit -b foo unwisely?

 I think approve should at least warn if the given branch doesn't match
 one of the branch certs already attached to the revision.

Is it more often used to reiterate someone else's claim that a rev
should be in a given branch, or to bless it into a special branch
(release branch, maybe) that people are, by policy, not generally
supposed to commit to? (Is it used often at all?)

Tim




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


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

2006-02-10 Thread Daniel Carosone
On Fri, Feb 10, 2006 at 10:39:02PM +0100, Richard Levitte - VMS Whacker wrote:
 Yeah, the only problem, as far as I see it, is that approve takes
 --branch, so for example, I could very easily say something like:
 
 monotone approve --branch=net.venge.monotone.approved.linux \
   6e87084a87413eed2c31100054ff8d5045f0be4d
 
 If that gets repeated a few, do you know what kind of graph that
 branch (which I invented on the spot) would have?  

There's nothing whatsoever intrinsically wrong with a disconnected
branch, so long as the users of that branch have appropriate
expectations.  Take a look a the BranchAnalogy page on the wiki for
some more discussion, if you haven't already; that's mostly intended
to explain the concept to new users, but there are some examples in
the discussion that are pertinent, iirc.

Here's a concrete hypothetical use case: in some slightly
alternate/future monotone, when we have the ability to grant netsync
write permissions by branch, we open up the public server and allow
anyone to push new revisions into a branch nvm.patch-submissions.  The
appropriate revid, or a suitable selector for it, then gets put into
bug trackers or sent to the mailing list, rather than the whole patch,
which might be large.

This branch will, typically, contain a whole pile of heads, many of
them clustered around the revisions tagged for releases, and some
others from users who follow mainline scattered in between.

Some of the patches will be good.  A monotone developer with suitable
rights/trusts reviews one of these patches, and finds it good. They
monotone approve that rev onto net.venge.monotone and monotone
merge to pull the patch back in to a new head on the mainline.

Furthermore, suppose several people submit slightly different patches
for the same issue.  Those revs can be explicit_merged, still in the
submissions branch, before the discrepancies are resolved and an
integrated patch proposal is approved onto mainline.  If this becomes
a significant amount of work, it will presumably be continued in a new
development branch for the purpose.

 I think approve should at least warn if the given branch doesn't match
 one of the branch certs already attached to the revision.

Well, maybe warn, but I see two primary uses for 'approve':

 - attest that code in some state (branch) is also appropriate for
   some other state (perhaps a release branch, or mainline), perhaps
   after code review.

 - reinforce an assertion already made, by adding another cert by a
   different signer, perhaps one more widely trusted (or perhaps for
   users in some branches that want multiple signers?)

My issue isn't really with approve at all: it's with the way that
disapprove does something entirely different.  I understand why, but
at the very least the name is wrong.

--
Dan.

pgp7dwR3KoAlu.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-10 Thread Bruce Stephens
Richard Levitte - VMS Whacker [EMAIL PROTECTED] writes:

[...]

 I did a little bit of experiment, and found out that I had
 misunderstood what the heads of a branch with a disconnected graph
 would be.  That was basically my worry with this scheme.

 My mantra for the night: experiment a little first, ask questions
 later.

Well, I did a quick experiment, setting up a branch a with a few
revisions (merged).  Then an entirely separate branch b with one
revision.  Then I approved h:b onto a, and a now has two heads.

So I suspect if someone wants to add approval to something in
net.venge.monotone.contrib.monotree and their cat steps on enter at
the wrong moment:

  monotone approve ... --branch=net.venge.monotone

then net.venge.monotone gets an unwanted head.

That's probably not an enormous issue: nothing will update to it, for
example.  Doesn't it make net.venge.monotone unmerged, though, and
mess up propagate and stuff?

And if you try and recover by updating to a proper revision in
net.venge.monotone, then monotone automate selector
h:net.venge.monotone.contrib.monotree  MT/revision; monotone commit;
monotone merge, or something, then anyone wanting to pull just nvm
gets bits of monotree, don't they (because those are now ancestors of
nvm, even though they have no actual input to it)?

Shouldn't we have a way to kill individual certs locally?  (I mean a
proper one, not involving db execute!)

[...]



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