hgversionint is an integer representing mercurial's version number. It maps
3 digit version numbers into integers. For example, hgversion 2.2.1 corresponds
to hgversionint 221. If hgversion has less than 3 digits, a 0 is added to the
right side of the version, givin a power of 10 hgversion it (e.g. hgversion 2.2
corresponds to hgversionint 220).
If the hgversion is a revision id or it just does not follow the usual A.B,
A.B.C (etc) convention, hgversionint will be None.
The purpose of this patch is to make it easier to compare the current mercurial
version to a given fixed version number.
This is necessary when a mercurial version introduces some new functionality
that is not easy to detect by importing the corresponding module.
diff --git a/tortoisehg/util/hgversion.py b/tortoisehg/util/hgversion.py
--- a/tortoisehg/util/hgversion.py
+++ b/tortoisehg/util/hgversion.py
@@ -16,6 +16,20 @@
from mercurial import version
hgversion = version.get_version()
+def version2int(v):
+ v = v.split('+')[0]
+ if not v or v == 'unknown' or len(v) >= 12:
+ return None
+ vers = re.split(r'\.|-', v)[:3]
+ if len(vers) < 2:
+ return None
+ vers = [int(d) for d in vers]
+ if len(vers) < 3:
+ vers.append(0)
+ return 100 * vers[0] + 10 * vers[1] + vers[2]
+
+hgversionint = version2int(hgversion)
+
def checkhgversion(v):
"""range check the Mercurial version"""
reqver = ['2', '1']