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