← Back to team overview

launchpad-dev team mailing list archive

Re: merge proposal mutation vs resubmit (LONG)

 

OK...

Here are my thoughts on the whole thing.

We have several different use-cases that we want to either allow or restrict 
depending on whose point of view you are looking at.

1) "oops made a mistake in proposing"
 - this occurs when the branch is proposed to merge to the wrong target, or 
forgetting to add a dependent branch

2) "I've broken this work up into multiple bits"
 - during review, it may be suggested that a change be broken into several 
parts

3) "finishing off someone else's work"
 - there are times when a different person may polish a piece of work for 
landing.  More common for community contributed work than a core developer

4) "only approved changes should be landed"
 - this is a little fluffy as we don't (yet) have merge queue integration with 
either PQM or Tarmac (fully).

5) "the review has rambled on and we want to start again"
 - this situation can occur when there has been a significant conversation 
around a change with possible many changes of direction, and a clean slate is 
wanted to start with the latest agreed changes.

6) "changes have been made post code-review"
 - sometimes this is allowed in the situations of core-developers making a 
trivial change, and sometimes a re-review is wanted in the situation of a 
bigger change, or a untrusted developer making changes

7) "wrong approach taken - massive rework needed"
 - this occurs occasionally, and is being included as a use-case for 
completeness even though it doesn't really match the above

8) "accidental implied approval approval of unreviewed code"
 - this is probably the primary use-case of things we want to avoid.
This is the use-case we want nice big flashing red lights around.

9) "malicious behaviour - attempting to land unreviewed code"
 - this is something that needs to be considered, but is probably not really 
going to happen very often.

Now... I don't propose to have the best solutions for all use-cases.  My 
general thought is that it is better to allow a user to change an existing 
merge proposal rather than making them delete the current one and propose a 
new one where it makes sense.  I think the big key here is "where it makes 
sense".  One of the things that does get sent out when a new merge proposal is 
created is a new email with a primary diff to review.  Where significant changes 
are made to the branches related to a merge proposal, the entire diff should be 
sent out again.

 * We should make it obvious on the page when extra revisions have been 
pushed, or if the reviewed revision is no longer in the branch.

 * Changing the source branch (taking over someone else's work) should result 
in a new merge proposal superseding the older branch, and the conversation 
from the old proposal should be shown in the conversation.

 * Wrong approach should result in a rejected proposal and a new one created 
for the new work.

 * Starting a new conversation should result in a new proposal with the old 
one rejected (not superseded), but perhaps keeping a copy of the description 
(and commit message), and the requested reviews, but setting existing reviews 
to pending (like resubmit does).

 * We should email out inter-diffs when new revisions are pushed.

I've run out of steam now...

Tim



Follow ups

References