[PATCH 0 of 1] Add qpush --exact

Matt Mackall mpm at selenic.com
Mon Nov 22 12:30:52 CST 2010


On Mon, 2010-11-22 at 12:33 -0500, Steve Losh wrote:
> On 11/18/10 at 01:51P, Matt Mackall wrote:
> > On Wed, 2010-11-17 at 21:18 -0500, Steve Losh wrote:
> > > We've been writing '# Parent abc123...' headers into MQ patches (as long as
> > > mq.plain isn't set) for two full versions now, but we haven't done anything
> > > special/useful with them yet.
> > > 
> > > A common problem I encounter is this:
> > > 
> > > 1. Someone sends me some MQ patches, or I make some.
> > > 2. I want to rebase them to the tip of a repo.
> > > 3. I run 'head' on the first patch file to see where I'm supposed to apply it.
> > > 4. I apply it, then rebase as normal to use the merge machinery to update the
> > >    patches.
> > > 
> > > I want to eliminate step 3.
> > 
> > Not sure if this is how I want to proceed. I've been thinking of 
> > moving in this direction:
> > 
> > You qpush or import a patch with a --try-magical-merge flag
> > The patch code finds the parent revision P in the patch
> > If that revision is present:
> >   remember current revision as T
> >   update to patch parent
> >   apply patch
> >   update T --force-ancestor P
> >   commit patch
> > 
> > With the force-ancestor switch, we force P to be chosen as the merge
> > ancestor, which means we combine all the changes P->T with all the
> > changes P->patch.
> > 
> > In other words, we get the mechanics of rebasing without having to strip
> > commits.
> > 
> > This also makes it possible to greatly simplify the rebase code and make
> > transplant-style operations easier.
> 
> Yeah, I remember talking about this kind of thing at the previous sprint.
> 
> It's a good idea, but I think there's still a place for a --exact command to
> tell qpush "I just want to put these patches where they belong".
> 
> The --merge-smartly option would take care of my case, but what if I just want
> to put the patches where I *know* they'll apply?  Example:
> 
> 1. I report a bug that only happens on OS X.
> 2. You come up with a patch that should fix the bug.
> 3. You send me the patch so I can test it, because you might not have an OS
>    X system around.
> 4. I just want to test your patch, so I use --exact.
> 
> I don't want to worry about resolving any conflicts that may happen even with
> --merge-smartly.  You wrote the patch, so you're the one that would be better
> at resolving conflicts. I just want to see if your patch fixed my bug.
> 
> In short, I'm all for a --merge-smartly option in qpush, but I don't think it
> completely removes the usefulness of --exact.

Ok. What happens if you have a patch pushed, and you try to qpush
--exact a patch that wants to apply somewhere else?

-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list