##// END OF EJS Templates
extensions: refuse to load extensions if minimum hg version not met...
Gregory Szorc -
r27142:060f83d2 default
parent child Browse files
Show More
@@ -101,6 +101,17 b' def load(ui, name, path):'
101 if ui.debugflag:
101 if ui.debugflag:
102 ui.traceback()
102 ui.traceback()
103 mod = importh(name)
103 mod = importh(name)
104
105 # Before we do anything with the extension, check against minimum stated
106 # compatibility. This gives extension authors a mechanism to have their
107 # extensions short circuit when loaded with a known incompatible version
108 # of Mercurial.
109 minver = getattr(mod, 'minimumhgversion', None)
110 if minver and util.versiontuple(minver, 2) > util.versiontuple(n=2):
111 ui.warn(_('(third party extension %s requires version %s or newer '
112 'of Mercurial; disabling)\n') % (shortname, minver))
113 return
114
104 _extensions[shortname] = mod
115 _extensions[shortname] = mod
105 _order.append(shortname)
116 _order.append(shortname)
106 for fn in _aftercallbacks.get(shortname, []):
117 for fn in _aftercallbacks.get(shortname, []):
@@ -1009,6 +1009,50 b" Test version number support in 'hg versi"
1009
1009
1010 throw 1.twentythree
1010 throw 1.twentythree
1011
1011
1012 Refuse to load extensions with minimum version requirements
1013
1014 $ cat > minversion1.py << EOF
1015 > from mercurial import util
1016 > util.version = lambda: '3.5.2'
1017 > minimumhgversion = '3.6'
1018 > EOF
1019 $ hg --config extensions.minversion=minversion1.py version
1020 (third party extension minversion requires version 3.6 or newer of Mercurial; disabling)
1021 Mercurial Distributed SCM (version 3.5.2)
1022 (see https://mercurial-scm.org for more information)
1023
1024 Copyright (C) 2005-* Matt Mackall and others (glob)
1025 This is free software; see the source for copying conditions. There is NO
1026 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1027
1028 $ cat > minversion2.py << EOF
1029 > from mercurial import util
1030 > util.version = lambda: '3.6'
1031 > minimumhgversion = '3.7'
1032 > EOF
1033 $ hg --config extensions.minversion=minversion2.py version 2>&1 | egrep '\(third'
1034 (third party extension minversion requires version 3.7 or newer of Mercurial; disabling)
1035
1036 Can load version that is only off by point release
1037
1038 $ cat > minversion2.py << EOF
1039 > from mercurial import util
1040 > util.version = lambda: '3.6.1'
1041 > minimumhgversion = '3.6'
1042 > EOF
1043 $ hg --config extensions.minversion=minversion3.py version 2>&1 | egrep '\(third'
1044 [1]
1045
1046 Can load minimum version identical to current
1047
1048 $ cat > minversion3.py << EOF
1049 > from mercurial import util
1050 > util.version = lambda: '3.5'
1051 > minimumhgversion = '3.5'
1052 > EOF
1053 $ hg --config extensions.minversion=minversion3.py version 2>&1 | egrep '\(third'
1054 [1]
1055
1012 Restore HGRCPATH
1056 Restore HGRCPATH
1013
1057
1014 $ HGRCPATH=$ORGHGRCPATH
1058 $ HGRCPATH=$ORGHGRCPATH
General Comments 0
You need to be logged in to leave comments. Login now