/tortoisehg/util/version.py
https://bitbucket.org/tortoisehg/hgtk/ · Python · 73 lines · 57 code · 10 blank · 6 comment · 17 complexity · 36c36535ec649a2370ee2a07e2291b35 MD5 · raw file
- # version.py - TortoiseHg version
- #
- # Copyright 2009 Steve Borho <steve@borho.org>
- #
- # This software may be used and distributed according to the terms of the
- # GNU General Public License version 2, incorporated herein by reference.
- import os
- from mercurial import ui, hg, commands, error
- from tortoisehg.util.i18n import _
- def liveversion():
- 'Attempt to read the version from the live repository'
- utilpath = os.path.dirname(os.path.realpath(__file__))
- thgpath = os.path.dirname(os.path.dirname(utilpath))
- if not os.path.isdir(os.path.join(thgpath, '.hg')):
- raise error.RepoError(_('repository %s not found') % thgpath)
- u = ui.ui()
- repo = hg.repository(u, path=thgpath)
- u.pushbuffer()
- commands.identify(u, repo, id=True, tags=True)
- l = u.popbuffer().split()
- while len(l) > 1 and l[-1][0].isalpha(): # remove non-numbered tags
- l.pop()
- if len(l) > 1: # tag found
- version = l[-1]
- if l[0].endswith('+'): # propagate the dirty status to the tag
- version += '+'
- elif len(l) == 1: # no tag found
- u.pushbuffer()
- commands.parents(u, repo, template='{latesttag}+{latesttagdistance}-')
- version = u.popbuffer() + l[0]
- return repo[None].branch(), version
- def version():
- try:
- branch, version = liveversion()
- return version
- except:
- pass
- try:
- import __version__
- return __version__.version
- except ImportError:
- return _('unknown')
- def package_version():
- try:
- branch, version = liveversion()
- extra = None
- if '+' in version:
- version, extra = version.split('+', 1)
- v = [int(x) for x in version.split('.')]
- while len(v) < 3:
- v.append(0)
- major, minor, periodic = v
- if extra != None:
- tagdistance = int(extra.split('-', 1)[0])
- periodic *= 10000
- if branch == 'default':
- periodic += tagdistance + 5000
- else:
- periodic += tagdistance + 1000
- return '.'.join([str(x) for x in (major, minor, periodic)])
- except:
- pass
- return _('unknown')