monotone-devel
[Top][All Lists]
Advanced

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

Re: [Monotone-devel] Re: monotone disapprove does not give correct branc


From: Nathaniel Smith
Subject: Re: [Monotone-devel] Re: monotone disapprove does not give correct branch cert
Date: Tue, 25 Oct 2005 16:30:23 -0700
User-agent: Mutt/1.5.9i

On Wed, Oct 26, 2005 at 12:34:54AM +0200, Wim Oudshoorn wrote:
> Nathaniel Smith <address@hidden> writes:
> > "approve" is short for "add a branch certificate"; that's all it does.
> > So I think it should add a branch certificate :-).
> 
> I stand corrected.  I never use approve and somehow I thought
> it was a shortcut for 'this revision did pass the tests'.

Ah, that's a sensible misunderstanding... honestly, the "approve" and
"disapprove" commands don't have the best names, the code review stuff
is more of a sketch than a fully fleshed design, as yet.

> > Fortunately, I think these goals are consistent here, because at the
> > more abstract level, branches are all about intentions -- putting a
> > revision in a branch is how we say that that revision is good for that
> > branches purpose.  'disapprove', now, is entirely about intentions --
> > we don't mean "this change was bad", we always have some purpose in
> > mind, "this change is bad for purpose X".  So disapprove revisions
> > should have branch certs on them.
> 
> Of course.  But what do you do in the following situation:
> 
> rev A                rev B                        rev C
> branch 1  ------->   branch 3  -- disapprove -->  branch(es) ???
> branch 2             branch 4                          

Error out and tell the user to use -b to specify a branch.  Maybe list
the plausible branches, too.

> Also.  I have the uncomfortable feeling that the disapprove should
> not be on a revision, but should be on an edge instead. 
> AFAICT, but I haven't tried it yet, you can't disapprove of a merge,
> or a propagate
> 
> 
> rev A
> branch 1  ----->    rev C        --- disapprove???  
>                     branch 1
>                / 
> rev B         / propagate
> branch 2     

Disapproval for merges is a very hard problem.  There was some
discussion of this on IRC a few weeks ago:
  http://frances.vorpus.org/~njs/mt-disapprove-merge.log
of which I guess Emile added some part to the docs...

See also:
  http://revctrl.org/Rollback

> But suppose the above works I can immediately tell that it will not work
> in the following situation, which btw is quite common in our setup:
> 
> 
> rev A        ......................   XXX 
> branch main 
>          \                            /
>            rev B         rev C       /  propagate back to main
>            branch fix    branch fix
> 
> 
> now if you try the above you don't get a nice new node rev D
> with branch certificate, you get just a branch certificate
> 
> branch main 
> 
> added to rev C.   This in itself is not bad, but very unfortantely
> monotone does not even add an edge between rev A and rev C to 
> indicate that a propagate has taken place.  

Adding an edge is, of course, physically impossible.  (Given current
understanding of the physics of computation.)

> Suppose you want to disapprove the propagate from branch fix
> to branch main because the fix was faulty and need some more development.
> How to do this cleanly?

I'd love to know -- this is exactly the "Rollback" case discussed on
that wiki page above.  Bram and I and maybe some others on #revctrl
used to mumble about various ad-hoc solutions for this, but all I
really know about it is on that page.

> I realize I drifted somewhat from the original topic,
> but disapprove in my mind is not really flushed out yet
> and it can't hurt to think about this.  

Indeed, these are hard problems, discussion is very valuable.  

> Oh and it falls for me in the same category is some other 
> nitpicking I have with the refusal of empty commits etc.
> When I have a clear head and some time I really really
> should write these things down.  

That'd be great.  Thanks :-).

-- 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 no end to the discussion).
  -- Serendipities, Umberto Eco




reply via email to

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