Show More
@@ -101,6 +101,17 b' def load(ui, name, path):' | |||
|
101 | 101 | if ui.debugflag: |
|
102 | 102 | ui.traceback() |
|
103 | 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 | 115 | _extensions[shortname] = mod |
|
105 | 116 | _order.append(shortname) |
|
106 | 117 | for fn in _aftercallbacks.get(shortname, []): |
@@ -1009,6 +1009,50 b" Test version number support in 'hg versi" | |||
|
1009 | 1009 | |
|
1010 | 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 | 1056 | Restore HGRCPATH |
|
1013 | 1057 | |
|
1014 | 1058 | $ HGRCPATH=$ORGHGRCPATH |
General Comments 0
You need to be logged in to leave comments.
Login now