##// END OF EJS Templates
branching: merge stable into default
Raphaël Gomès -
r51611:0ab39565 merge default
parent child Browse files
Show More
@@ -245,3 +245,4 b' 83ea6ce48b4fd09fb79c4e34cc5750c805699a53'
245 245 f952be90b0514a576dcc8bbe758ce3847faba9bb 0 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
@@ -261,3 +261,4 b' 83ea6ce48b4fd09fb79c4e34cc5750c805699a53'
261 261 f952be90b0514a576dcc8bbe758ce3847faba9bb 6.4.2
262 262 fc445f8abcf90b33db7c463816a1b3560681767f 6.4.3
263 263 da372c745e0f053bb7a64e74cccd15810d96341d 6.4.4
264 271a4ab29605ffa0bae5d3208eaa21a95427ff92 6.4.5
@@ -5222,11 +5222,8 b' def paths(ui, repo, search=None, **opts)'
5222 5222 assert subopt not in (b'name', b'url')
5223 5223 if showsubopts:
5224 5224 fm.plain(b'%s:%s = ' % (name, subopt))
5225 if isinstance(value, bool):
5226 if value:
5227 value = b'yes'
5228 else:
5229 value = b'no'
5225 display = urlutil.path_suboptions_display[subopt]
5226 value = display(value)
5230 5227 fm.condwrite(showsubopts, subopt, b'%s\n', value)
5231 5228
5232 5229 fm.end()
@@ -2146,7 +2146,7 b' def debuginstall(ui, **opts):'
2146 2146 ),
2147 2147 )
2148 2148 re2 = b'missing'
2149 if util._re2:
2149 if util.has_re2():
2150 2150 re2 = b'available'
2151 2151 fm.plain(_(b'checking "re2" regexp engine (%s)\n') % re2)
2152 2152 fm.data(re2=bool(util._re2))
@@ -2210,10 +2210,21 b' except ImportError:'
2210 2210 _re2 = False
2211 2211
2212 2212
2213 def has_re2():
2214 """return True is re2 is available, False otherwise"""
2215 if _re2 is None:
2216 _re._checkre2()
2217 return _re2
2218
2219
2213 2220 class _re:
2214 def _checkre2(self):
2221 @staticmethod
2222 def _checkre2():
2215 2223 global _re2
2216 2224 global _re2_input
2225 if _re2 is not None:
2226 # we already have the answer
2227 return
2217 2228
2218 2229 check_pattern = br'\[([^\[]+)\]'
2219 2230 check_input = b'[ui]'
@@ -658,9 +658,11 b' class paths(dict):'
658 658
659 659
660 660 _pathsuboptions = {}
661 # a dictionnary of methods that can be used to format a sub-option value
662 path_suboptions_display = {}
661 663
662 664
663 def pathsuboption(option, attr):
665 def pathsuboption(option, attr, display=pycompat.bytestr):
664 666 """Decorator used to declare a path sub-option.
665 667
666 668 Arguments are the sub-option name and the attribute it should set on
@@ -671,17 +673,26 b' def pathsuboption(option, attr):'
671 673 The function should return the value that will be set on the ``path``
672 674 instance.
673 675
676 The optional `display` argument is a function that can be used to format
677 the value when displayed to the user (like in `hg paths` for example).
678
674 679 This decorator can be used to perform additional verification of
675 680 sub-options and to change the type of sub-options.
676 681 """
677 682
678 683 def register(func):
679 684 _pathsuboptions[option] = (attr, func)
685 path_suboptions_display[option] = display
680 686 return func
681 687
682 688 return register
683 689
684 690
691 def display_bool(value):
692 """display a boolean suboption back to the user"""
693 return b'yes' if value else b'no'
694
695
685 696 @pathsuboption(b'pushurl', b'_pushloc')
686 697 def pushurlpathoption(ui, path, value):
687 698 u = url(value)
@@ -740,9 +751,14 b' DELTA_REUSE_POLICIES = {'
740 751 b'no-reuse': revlog_constants.DELTA_BASE_REUSE_NO,
741 752 b'forced': revlog_constants.DELTA_BASE_REUSE_FORCE,
742 753 }
754 DELTA_REUSE_POLICIES_NAME = dict(i[::-1] for i in DELTA_REUSE_POLICIES.items())
743 755
744 756
745 @pathsuboption(b'pulled-delta-reuse-policy', b'delta_reuse_policy')
757 @pathsuboption(
758 b'pulled-delta-reuse-policy',
759 b'delta_reuse_policy',
760 display=DELTA_REUSE_POLICIES_NAME.get,
761 )
746 762 def delta_reuse_policy(ui, path, value):
747 763 if value not in DELTA_REUSE_POLICIES:
748 764 path_name = path.name
@@ -757,7 +773,7 b' def delta_reuse_policy(ui, path, value):'
757 773 return DELTA_REUSE_POLICIES.get(value)
758 774
759 775
760 @pathsuboption(b'multi-urls', b'multi_urls')
776 @pathsuboption(b'multi-urls', b'multi_urls', display=display_bool)
761 777 def multiurls_pathoption(ui, path, value):
762 778 res = stringutil.parsebool(value)
763 779 if res is None:
@@ -1,3 +1,9 b''
1 = Mercurial 6.4.5 =
2
3 * re2: fix reporting of availability in `hg debuginstall`
4 * ui: fix crash in `hg paths` when pulled-delta-reuse-policy is in use
5 * path: display proper user facing value for pulled-delta-reuse-policy
6
1 7 = Mercurial 6.4.4 =
2 8
3 9 * clonebundles: filter out invalid schemes instead of failing on them
@@ -178,6 +178,9 b' pull with "forced" policy'
178 178 -------------------------
179 179
180 180 $ cp -R client client-forced
181 $ hg -R client-forced paths --config paths.default:pulled-delta-reuse-policy=forced
182 default = $TESTTMP/server
183 default:pulled-delta-reuse-policy = forced
181 184 $ hg -R client-forced pull --config paths.default:pulled-delta-reuse-policy=forced
182 185 pulling from $TESTTMP/server
183 186 requesting all changes
General Comments 0
You need to be logged in to leave comments. Login now