[PATCH 04 of 10] rebase: improve error message for base revision
pierre-yves.david at ens-lyon.org
Fri Jan 17 17:31:52 CST 2014
On 01/14/2014 06:25 PM, Mads Kiilerich wrote:
> would also be confusingOn 01/13/2014 08:29 AM, Pierre-Yves David wrote:
>> On Sun, Jan 12, 2014 at 05:08:02PM +0100, Mads Kiilerich wrote:
>>> # HG changeset patch
>>> # User Mads Kiilerich <madski at unity3d.com>
>>> # Date 1384730518 18000
>>> # Sun Nov 17 18:21:58 2013 -0500
>>> # Node ID 55325a119cbeea17c2379bbe23f20d6226442a03
>>> # Parent ef40ccf4914c597e32885227dde08abe40e41ad5
>>> rebase: improve error message for base revision
>>> Before it just said 'nothing to rebase', now it also hints to the
>> I like the idea of improving rebase error message but this one about
>> base is confusing.
>> The argument from base is "changeset to compute a base from" not
>> "base changeset".
> "compute a base from" - is that an official description somewhere?
> What is a "base" really? The set it is computing from "base" can not
> really be called a "base".
Well it kind of compute a real -base- to use as in --source to get the
The revset is "(children(ancestor(<base>, <dest>)) and ::(<base>))::"
Most of it "(children(ancestor(<base>, <dest>)) and ::(<base>))" is
about computing a base. It then takes all descendant in the rebase set.
> I will call it "base" and quote it. Reading that and the option name
> as "smurf" makes it more readable than when trying to think of it as
> some kind of base ;-)
Quoting it improve it a lot
> And more important: I will avoid mentioning "base" when it working
> directory is used as default.
>> So I would made the following changes:
>>> nothing to rebase - NODE is both base and destination
>> nothing to rebase - NODE is both source and destination
>>> nothing to rebase - base NODE is already an ancestor of destination
>> cannot rebase - destination NODE is based on source NODE
> I don't think "based on" would be helpful. I think 'ancestor' is better.
The issue I have from this changeset is "already an ancestors of"
When I use `hg rebase --dest D --base A` I'm trying to make D an
ancestors of A. reading it the other way around is confusing my brain.
$ hg rebase --dest D --base A
# me: please make D an ancestors of A
# hg: can't A is -already- and ancestors of D
# me: not what I'm asking for idiot!
After writing this down I think dropping the "already" will make it fine:
nothing to rebase - base NODE is an ancestor of destination NODE
I do not really like the "nothing to rebase". And will probbly would
like to have an error returned here. But his can be pushed out of this
> It would also be confusing to call the value that the user specified
> with --base for "source".
hg help rebase use "source" all over the place. The "source/destination"
idea apply well to rebase whatever the actual initial option is used.
>>> 'base revset is empty',
>> nothing to rebase - can't compute base from empty revset
> But it is not a base it is computing!
yes it is (see revset above). you could also use "rebase set". (or use
your "base" trick, okay)
>> Moreover reading this test ouput puzzled me:
>>> $ hg rebase
>>> nothing to rebase - e7ec4e813ba6 is both base and destination
>> What about dedicated detection and a more specific message.
>> nothing to rebase - already on BRANCH tipmost head
>> (do you want to use to use --dest or --base?)
> That can perhaps be introduced later. I would like to get the dest
> computation under control first.
Ok with it introduced later (could worth being pointed in a comment or a
>> I starting to thing --base could have been better named --branch (but
>> people would think it is about named branch)
> It is not directly specifying the branch. It only gives meaning
> relative to a dest, and then it is giving a hint, pointing at a
> subtree, identifying a branch, selecting a side. Some of these words
> can perhaps be used.
--base ask rebase to grab everything "branching" from --dest that
somehow contains the target of `--branch`. Its the "grab that branchy
More information about the Mercurial-devel