Changing the wdir() {rev} and {node} output

Yuya Nishihara yuya at tcha.org
Tue Apr 16 19:29:41 EDT 2019


On Tue, 16 Apr 2019 10:14:53 -0400, Jordi Gutiérrez Hermoso wrote:
> While I think it might be okay to keep the iternal values,
> 
> https://www.mercurial-scm.org/repo/hg/file/967c098eed33/mercurial/node.py#l39
> 
> I think it's far too confusing to expose them in the user interface.
> 
> A particular inconsistency I see is that we already have a way to show
> wdir(), for example. In a way, `hg id -T` is kind of an alias for `hg
> log -r 'wdir()' -T ... ` in a way that is not obvious. But trying to
> use '{node}' or '{rev}' in `hg id` results in exposing the internal
> revision and node magic numbers, which is very confusing behaviour,
> since the default behaviour of `hg id` is to show `{p1.rev}+` instead
> if there are changes in the wdir.
> 
> Another instance in which this happens is `hg annotate -r 'wdir()'`,
> which also shows plusses to indicate that the changes are only in the
> working directory.
> 
> I think we should keep this behaviour throughout, for consistency.
> Since `wdir()` is still marked as experimental, we can change its
> current behaviour. I propose consistency with `hg id` as follows:

First, I'm okay to change the output of "hg whatever -r 'wdir()'" if that
makes things more consistent. However, {rev}/{node} keywords should still
return wdirrev/wdirhex since they are valid identifiers whereas "<p1node>+"
isn't.

>     * If the working directory is clean, the following are equivalent:
> 
>           hg log -r 'wdir()' -T '{rev}:{node}'
>           hg log -r . -T '{rev}:{node}'

Do you mean `hg log -r 'wdir()'` should fall back to '.' if wdir is clean?
I believe it'll be way complicated.

If clean "wdir()" == ".", "hg status --change 'wdir()'" would have to
show the changes in "." as well, which makes no sense.

>     * Otherwise, if there are changes in the working directory, the
>       following are equivalent:
> 
>          hg log -r 'wdir()' -T '{rev}:{node}'
>          hg log -r '.' -T'{rev}+:{node}+'
> 
> In other words, never show in the interface the internal values of
> wdir() obtained from node.py
> 
> I think this would be consistent with the existing usage of `hg id`
> and `hg log`, the main consumers of `wdir()`.


More information about the Mercurial-devel mailing list