335 numerictags = [] |
335 numerictags = [] |
336 cmd = ['log', '-r', '.', '--template', '{tags}\n'] |
336 cmd = ['log', '-r', '.', '--template', '{tags}\n'] |
337 pieces = sysstr(hg.run(cmd)).split() |
337 pieces = sysstr(hg.run(cmd)).split() |
338 numerictags = [t for t in pieces if t[0:1].isdigit()] |
338 numerictags = [t for t in pieces if t[0:1].isdigit()] |
339 hgid = sysstr(hg.run(['id', '-i'])).strip() |
339 hgid = sysstr(hg.run(['id', '-i'])).strip() |
|
340 if hgid.count('+') == 2: |
|
341 hgid = hgid.replace("+", ".", 1) |
340 if not hgid: |
342 if not hgid: |
341 eprint("/!\\") |
343 eprint("/!\\") |
342 eprint(r"/!\ Unable to determine hg version from local repository") |
344 eprint(r"/!\ Unable to determine hg version from local repository") |
343 eprint(r"/!\ Failed to retrieve current revision tags") |
345 eprint(r"/!\ Failed to retrieve current revision tags") |
344 return '' |
346 return '' |
345 if numerictags: # tag(s) found |
347 if numerictags: # tag(s) found |
346 version = numerictags[-1] |
348 version = numerictags[-1] |
347 if hgid.endswith('+'): # propagate the dirty status to the tag |
349 if hgid.endswith('+'): # propagate the dirty status to the tag |
348 version += '+' |
350 version += '+' |
349 else: # no tag found on the checked out revision |
351 else: # no tag found on the checked out revision |
350 ltagcmd = ['parents', '--template', '{latesttag}'] |
352 ltagcmd = ['log', '--rev', 'wdir()', '--template', '{latesttag}'] |
351 ltag = sysstr(hg.run(ltagcmd)) |
353 ltag = sysstr(hg.run(ltagcmd)) |
352 if not ltag: |
354 if not ltag: |
353 eprint("/!\\") |
355 eprint("/!\\") |
354 eprint(r"/!\ Unable to determine hg version from local repository") |
356 eprint(r"/!\ Unable to determine hg version from local repository") |
355 eprint( |
357 eprint( |
356 r"/!\ Failed to retrieve current revision distance to lated tag" |
358 r"/!\ Failed to retrieve current revision distance to lated tag" |
357 ) |
359 ) |
358 return '' |
360 return '' |
359 changessincecmd = ['log', '-T', 'x\n', '-r', "only(.,'%s')" % ltag] |
361 changessincecmd = [ |
|
362 'log', |
|
363 '-T', |
|
364 'x\n', |
|
365 '-r', |
|
366 "only(parents(),'%s')" % ltag, |
|
367 ] |
360 changessince = len(hg.run(changessincecmd).splitlines()) |
368 changessince = len(hg.run(changessincecmd).splitlines()) |
361 version = '%s+hg%s.%s' % (ltag, changessince, hgid) |
369 version = '%s+hg%s.%s' % (ltag, changessince, hgid) |
362 if version.endswith('+'): |
370 if version.endswith('+'): |
363 version = version[:-1] + 'local' + time.strftime('%Y%m%d') |
371 version = version[:-1] + 'local' + time.strftime('%Y%m%d') |
364 return version |
372 return version |