##// END OF EJS Templates
branching: merge stable into default
Raphaël Gomès -
r51829:6408777c merge default
parent child Browse files
Show More
@@ -249,3 +249,4 b' 271a4ab29605ffa0bae5d3208eaa21a95427ff92'
249 bb42988c7e156931b0ff1e93732b98173ebbcb7f 0 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
@@ -265,3 +265,4 b' 271a4ab29605ffa0bae5d3208eaa21a95427ff92'
265 bb42988c7e156931b0ff1e93732b98173ebbcb7f 6.5rc0
265 bb42988c7e156931b0ff1e93732b98173ebbcb7f 6.5rc0
266 3ffc7209bbae5804a53084c9dc2d41139e88c867 6.5
266 3ffc7209bbae5804a53084c9dc2d41139e88c867 6.5
267 787af4e0e8b787e1b77a8059926b123730a4cd01 6.5.1
267 787af4e0e8b787e1b77a8059926b123730a4cd01 6.5.1
268 5a8b5420103937fca97c584c5162178eed828ada 6.5.2
@@ -16,6 +16,7 b' import os'
16
16
17 from .i18n import _
17 from .i18n import _
18 from . import (
18 from . import (
19 encoding,
19 error,
20 error,
20 pycompat,
21 pycompat,
21 util,
22 util,
@@ -229,7 +230,7 b' class transaction(util.transactional):'
229 validator=None,
230 validator=None,
230 releasefn=None,
231 releasefn=None,
231 checkambigfiles=None,
232 checkambigfiles=None,
232 name='<unnamed>',
233 name=b'<unnamed>',
233 ):
234 ):
234 """Begin a new transaction
235 """Begin a new transaction
235
236
@@ -318,7 +319,7 b' class transaction(util.transactional):'
318 def __repr__(self):
319 def __repr__(self):
319 name = b'/'.join(self._names)
320 name = b'/'.join(self._names)
320 return '<transaction name=%s, count=%d, usages=%d>' % (
321 return '<transaction name=%s, count=%d, usages=%d>' % (
321 name,
322 encoding.strfromlocal(name),
322 self._count,
323 self._count,
323 self._usages,
324 self._usages,
324 )
325 )
@@ -574,7 +575,7 b' class transaction(util.transactional):'
574 self._file.flush()
575 self._file.flush()
575
576
576 @active
577 @active
577 def nest(self, name='<unnamed>'):
578 def nest(self, name=b'<unnamed>'):
578 self._count += 1
579 self._count += 1
579 self._usages += 1
580 self._usages += 1
580 self._names.append(name)
581 self._names.append(name)
@@ -1,3 +1,13 b''
1 = Mercurial 6.5.2 =
2
3 * hgweb: encode WSGI environment using the ISO-8859-1 codec
4 * rhg: fix the bug where sparse config is interpreted as relglob instead of glob
5 * gpg: fix an UnboundLocalError whenever using --force
6 * transaction: fix __repr__() and make the default name bytes
7 * setup: make the error "Unable to find a working hg binary" more informative
8 * tests: avoid test environment affecting setup.py
9 * run-tests: detect HGWITHRUSTEXT value
10
1 = Mercurial 6.5.1 =
11 = Mercurial 6.5.1 =
2
12
3 * A bunch of improvements to Python 3.12 compatibility
13 * A bunch of improvements to Python 3.12 compatibility
@@ -278,28 +278,44 b' def findhg():'
278 # gives precedence to hg.exe in the current directory, so fall back to the
278 # gives precedence to hg.exe in the current directory, so fall back to the
279 # python invocation of local hg, where pythonXY.dll can always be found.
279 # python invocation of local hg, where pythonXY.dll can always be found.
280 check_cmd = ['log', '-r.', '-Ttest']
280 check_cmd = ['log', '-r.', '-Ttest']
281 if os.name != 'nt' or not os.path.exists("hg.exe"):
281 attempts = []
282
283 def attempt(cmd, env):
282 try:
284 try:
283 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv)
285 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv)
284 except EnvironmentError:
286 res = (True, retcode, out, err)
285 retcode = -1
287 if retcode == 0 and not filterhgerr(err):
286 if retcode == 0 and not filterhgerr(err):
288 return True
289 except EnvironmentError as e:
290 res = (False, e)
291 attempts.append((cmd, res))
292 return False
293
294 if os.name != 'nt' or not os.path.exists("hg.exe"):
295 if attempt(hgcmd + check_cmd, hgenv):
287 return hgcommand(hgcmd, hgenv)
296 return hgcommand(hgcmd, hgenv)
288
297
289 # Fall back to trying the local hg installation.
298 # Fall back to trying the local hg installation.
290 hgenv = localhgenv()
299 hgenv = localhgenv()
291 hgcmd = [sys.executable, 'hg']
300 hgcmd = [sys.executable, 'hg']
292 try:
301 if attempt(hgcmd + check_cmd, hgenv):
293 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv)
294 except EnvironmentError:
295 retcode = -1
296 if retcode == 0 and not filterhgerr(err):
297 return hgcommand(hgcmd, hgenv)
302 return hgcommand(hgcmd, hgenv)
298
303
299 eprint("/!\\")
304 eprint("/!\\")
300 eprint(r"/!\ Unable to find a working hg binary")
305 eprint(r"/!\ Unable to find a working hg binary")
301 eprint(r"/!\ Version cannot be extract from the repository")
306 eprint(r"/!\ Version cannot be extracted from the repository")
302 eprint(r"/!\ Re-run the setup once a first version is built")
307 eprint(r"/!\ Re-run the setup once a first version is built")
308 eprint(r"/!\ Attempts:")
309 for i, e in enumerate(attempts):
310 eprint(r"/!\ attempt #%d:" % (i))
311 eprint(r"/!\ cmd: ", e[0])
312 res = e[1]
313 if res[0]:
314 eprint(r"/!\ return code:", res[1])
315 eprint("/!\\ std output:\n%s" % (res[2].decode()), end="")
316 eprint("/!\\ std error:\n%s" % (res[3].decode()), end="")
317 else:
318 eprint(r"/!\ exception: ", res[1])
303 return None
319 return None
304
320
305
321
@@ -165,6 +165,7 b' def _bytes2sys(p):'
165 return p.decode('utf-8')
165 return p.decode('utf-8')
166
166
167
167
168 original_env = os.environ.copy()
168 osenvironb = getattr(os, 'environb', None)
169 osenvironb = getattr(os, 'environb', None)
169 if osenvironb is None:
170 if osenvironb is None:
170 # Windows lacks os.environb, for instance. A proxy over the real thing
171 # Windows lacks os.environb, for instance. A proxy over the real thing
@@ -3770,7 +3771,7 b' class TestRunner:'
3770 makedirs(self._bindir)
3771 makedirs(self._bindir)
3771
3772
3772 vlog("# Running", cmd.decode("utf-8"))
3773 vlog("# Running", cmd.decode("utf-8"))
3773 if subprocess.call(_bytes2sys(cmd), shell=True) == 0:
3774 if subprocess.call(_bytes2sys(cmd), shell=True, env=original_env) == 0:
3774 if not self.options.verbose:
3775 if not self.options.verbose:
3775 try:
3776 try:
3776 os.remove(installerrs)
3777 os.remove(installerrs)
General Comments 0
You need to be logged in to leave comments. Login now