[PATCH 3 of 3] setup: improve tag retrieval for archives and fallback to lasttag otherwise

Mads Kiilerich mads at kiilerich.com
Sun Aug 9 18:19:21 CDT 2009

Gilles Moris wrote, On 08/09/2009 10:43 PM:
> On Sun August 9 2009 21:29:12 Mads Kiilerich wrote:
>> If the working directory is dirty then we might want to include the
>> timestamp also in the next cas
> It is already not working for if we are on a tag.
> That's why I was thinking about an independent patch.

Good idea. It might be better to put that patch first in the queue to 
avoid introducing yet another broken case which then has to be fixed.

>> (It could perhaps be convenient to also include the hash in the version
>> string in all cases, but that is a different story.)
> That's not the case if we are on a tag, but in any other case we have a hash.
> You want to stick with that, right ?

Tags can easily be moved to point to other changesets, so relying on 
them being unique and immutable is a bit risky. So I do think it would 
be nice to also show the hash when on a tag. I don't know how the bigger 
fishs in the pond feels.

>>> +        if line.startswith('lasttag:'):
>>> +            lasttag = line.split(':')[1].strip()
>> lasttag = line.split(':', 1)[1].strip()
> Or may be even simpler:
>    line[9:].strip()

Well ... yes. That is also how it is done in for example 
hgext/convert/cvs.py. But FWIW I don't like these magic numbers.
line[len('lasttag:') + 1:].strip() avoids the magic number at the cost 
of repeating the constant, which can be mitigated by introducing a 
Or perhaps line[line.index(':') + 1:].strip()

I have several times needed a good Python pattern for "if string starts 
with a given string then do something with the rest", but haven't found 
a good one.

> Another question about the format:
> # hg version -q
> Mercurial Distributed SCM (version f61394b23964 (1.3.1+81))
> Do we want to replace parenthesis by brace or bracket ?
> Spaces around the "+" ?

My humble opinion:

First of all I would prefer to get rid of the outer paranthesis. That 
would change the output somehow, so I don't know if that is an option.

lasttag and distance says more about the version than the hash, so I 
would prefer to have them first and then (always) the hash in paranthesis.

I think the + looks fine.

So I suggest for example:
Mercurial Distributed SCM, version 1.3.1 (f61394b23964)
Mercurial Distributed SCM, version 1.3.1+81 (f61394b23964)
Mercurial Distributed SCM, version 1.3.1+20090809 (f61394b23964+)
Mercurial Distributed SCM, version 1.3.1+81+20090809 (f61394b23964+)
Mercurial Distributed SCM, version unknown (f61394b23964)

(But if you _really_ want a unambiguous notation for latest tag and 
distance you could use "1.3.1::81" ... but why should we want that ...)


More information about the Mercurial-devel mailing list