[PATCH] mq: Add a new command, 'qrebase', to obviate need for 'qsave'

Peter Williams pwil3058 at bigpond.net.au
Wed Aug 26 19:51:46 CDT 2009


On 26/08/09 23:16, Augie Fackler wrote:
>
> On Aug 26, 2009, at 5:45 AM, Peter Williams wrote:
>
>>>> magically DTRT even though there's an mq, since rebase is already mq
>>>> safe.
>>>
>>> Rebase is NOT mq safe and there are at least 2 outstanding bug reports
>>> that support this statement.
>>>
>>> <http://mercurial.selenic.com/bts/issue1561>
>>> <http://mercurial.selenic.com/bts/issue1807>
>>
>
> Those bugs look like they're annoyances, but not actually harmful to
> user data.

For one of them, it depends what you do with your hooks.

For the other, I'm not sure how harmful it is but there seems to be an 
implication that the wrong ancestors are being used in the merge and 
this could lead to unexpected changes to the code especially if no 
conflict is severe enough to invite human intervention.

> If I'm wrong, that seems to me a perfect argument for not
> even considering this patch until those bugs are fixed, as we'd be
> encouraging users to destroy their work.

Yes, holding it back is probably a good idea.

Similarly, qsave shouldn't be removed from mq until rebase is fixed either.

>
>> I should have added here that I'm confident that these bugs will be
>> fixed and that rebase will become mq safe. After all, qreparent relies
>> on rebase being mq safe and that it will DTRT (so while rebase is
>> broken so is qreparent). It's just a different (more mq user oriented)
>> way of invoking rebase. It's not a replacement for rebase. It's not
>> disrespecting rebase. It's just making its use easier for mq users.
>
> Sure, it's a little easier for mq users - but you could tell them about
> rebase in the docs instead, and actually *teach* them something about
> rebase in the process.
>
> In any case, if it does get included, I'd rather it be called qrebase
> than qreparent - it seems to me it should be called what it does.

Which is reparent the patch series :-).

>
> Alternatively, have you thought of having mq add a --mq flag to rebase?
> That's what hgsubversion does for rebase, and I think it works pretty well.

Yes, I have thought of that (or something similar) but was holding it as 
a possible compromise solution.  Typing '--mq' is a lot better than 
typing '--base qbase' or '--source qbase' whichever is most appropriate 
(it's hard to tell as rebase's documentation is a bit sparse on the 
subject).  It still leaves the mq user worrying about rebase options 
which are irrelevant to them.

It's also a bit sparse on the topic of whether the --dest option is 
compulsory and, if not, what strategy rebase uses to determine the 
destination if the --dest option is omitted.  Does it use the same 
strategy as update?  Or what?

Peter
-- 
Peter Williams                                   pwil3058 at bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce


More information about the Mercurial-devel mailing list