[PATCH 3 of 5] templatekw: introduce showlatesttags() to handle {latesttag} keywords

Pierre-Yves David pierre-yves.david at ens-lyon.org
Mon Oct 5 12:43:31 CDT 2015



On 10/05/2015 06:16 AM, Yuya Nishihara wrote:
> On Sun, 04 Oct 2015 17:47:36 -0400, Matt Harbison wrote:
>> # HG changeset patch
>> # User Matt Harbison <matt_harbison at yahoo.com>
>> # Date 1440472020 14400
>> #      Mon Aug 24 23:07:00 2015 -0400
>> # Node ID 18044dbb9f7ea8f3d015fed7c49f3ad24d8027ac
>> # Parent  1df0499bb7e527cab3a15114a549e40842abee37
>> templatekw: introduce showlatesttags() to handle {latesttag} keywords
>>
>> The keywords {changes}, {distance} and {tag} will be available on a future
>> template method that will allow pattern matching against tag names.  For
>> consistency, these should be available on the existing {latesttag} keyword as
>> well.
>>
>> I debated whether or not to add {tag} instead of just continuing with the
>> existing {latesttag}.  But it seems clearer not to have the same name for two
>> distinct things (a list in the LHS of %, and an individual tag value on the
>> right).
>>
>> The value of latesttags[0] is the date of commit for the cset to which the tag
>> is applied (i.e. not the date the tag was applied), and therefore isn't made
>> visible because it doesn't seem interesting.  It appears that this is merely an
>> internal implementation detail for sorting csets in a stable manner when there
>> are different branches.
>>
>> diff --git a/mercurial/templatekw.py b/mercurial/templatekw.py
>> --- a/mercurial/templatekw.py
>> +++ b/mercurial/templatekw.py
>> @@ -350,6 +350,35 @@
>>
>>       return showlist('latesttag', latesttags, separator=':', **args)
>>
>> +def showlatesttags(pattern, **args):
>> +    """helper method for the latesttag keyword and function"""
>> +    repo, ctx = args['repo'], args['ctx']
>> +    cache = args['cache']
>> +    latesttags = getlatesttags(repo, ctx, cache, pattern)
>> +
>> +    def changes(**args):
>> +        offset = 0
>> +        revs = [ctx.rev()]
>> +        tag = args['latesttag']
>> +
>> +        # The only() revset doesn't currently support wdir()
>> +        if ctx.rev() is None:
>> +            offset = 1
>> +            revs = [p.rev() for p in ctx.parents()]
>> +
>> +        return len(repo.revs('only(%ld, %s)', revs, tag)) + offset
>> +
>> +    makemap = lambda v: {
>> +        'changes': changes,
>
> My two cents. This "changes" function can be factored out to
> "'changes': _showchangessincelatesttag". Only difference is how the latesttag
> is obtained.
>
> I've queued the first two patches, thanks.

I can't see them on the clowcopter. did you push them?

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list