[PATCH 1 of 3 RFC V3] revset: add wdir() function to specify workingctx revision by command

Matt Harbison mharbison72 at gmail.com
Fri Mar 20 19:11:30 CDT 2015


On Fri, 20 Mar 2015 10:11:53 -0400, Yuya Nishihara <yuya at tcha.org> wrote:

> On Thu, 19 Mar 2015 23:43:46 -0400, Matt Harbison wrote:
>> On Thu, 19 Mar 2015 12:23:12 -0400, Yuya Nishihara <yuya at tcha.org>  
>> wrote:
>> > # HG changeset patch
>> > # User Yuya Nishihara <yuya at tcha.org>
>> > # Date 1408164256 -32400
>> > #      Sat Aug 16 13:44:16 2014 +0900
>> > # Node ID ac80716bb799448df0181f5a3169b7242bdf8400
>> > # Parent  5cb459dc32d209653a3e5d77749cf989ab9a51e4
>> > revset: add wdir() function to specify workingctx revision by command
>>
>> I like this.  I've wanted to see the uncommitted changes in the thg file
>> history more than once.
>>
>> > List of commands that will potentially support workingctx revision:
>> >
>> >   command   default  remarks
>> >   --------  -------
>> > -----------------------------------------------------
>> >   annotate  p1       useful
>> >   archive   p1       might be useful
>>
>> Could be useful on Windows to get a tree copy that excludes the .hg dir,
>> and/or in the non zip formats without a 3rd party utility being  
>> installed.
>>
>> >   cat       p1       might be useful on Windows (no cat)
>> >   diff      p1:wdir  (default)
>> >   export    p1       might be useful if wctx can have draft commit
>> > message
>> >   files     wdir     (default)
>> >   grep      tip:0    might be useful
>>
>> Useful on Windows (built in 'find' is not nearly as useful).
>>
>> >   identify  wdir     (default)
>> >   locate    wdir     (default)
>> >   log       tip:0    might be useful with -p or -G option
>> >   parents   wdir     (default)
>> >   status    wdir     (default)
>>
>> Based on this table, largefiles will need some fixes to support archive
>> and cat (assuming annotate, diff, export and grep aren't useful on a
>> largefile), but that doesn't look too complicated.
>
> Good point.
>
>> Not a blocker to adding this revset, but do you have any thoughts on how
>> to get the workingctx in a subrepo?  (Consider something like 'hg cat -r
>> wdir() subrepo/file.txt'.)
>
> I don't have good idea. changectx could have a different function that  
> returns
> a subrepo at ctx.subrev(), but only workingctx needs such distinction.
>
>   ctx.wsub(path) -> subrepo at substate[1]
>   wctx.wsub(path) -> subrepo at None

I'll give this a try.  I was really hoping to hide it inside  
subrepo.subrepo(), but this might be an easier transition.

>> I wish there was a 1 char symbol too, but 'wdir()' seems fine to me  
>> given
>> how scarce they are.  Is '_' the only symbol left (that won't cause  
>> shell
>> problems)?
>
> I've proposed a nullary operator '+' before, but it's too magical.

FWIW, it doesn't seem magical to me.  It seems fairly reasonable given  
that 'hg identify' prints a '+' when there are changes to the working  
directory.  No changes basically implies '.' instead of the working  
directory anyway.  Granted, identify probably isn't used daily, and may  
therefore be one of the more obscure commands.

--Matt


More information about the Mercurial-devel mailing list