##// END OF EJS Templates
windows: fix incorrect detection of broken pipe when writing to pager...
windows: fix incorrect detection of broken pipe when writing to pager Paging e.g. hg incoming on Windows and quitting the pager before the output is consumed will print 'abort: Invalid argument'. This is because the windows error 0xE8 (ERROR_NO_DATA) is mapped to EINVAL even though it is documented as 'The pipe is being closed'. Note that this fix assumes that Windows' last error code is still valid in the exception handler. It works correctly in all my tests. A simpler fix would be to just map EINVAL to EPIPE, like was done is flush previously, but that would be less precise. This error was not observed previously, when pager was an extension.

File last commit:

r36490:d0d5eef5 default
r38575:3a0f322a stable
Show More
narrowcopies.py
34 lines | 1.1 KiB | text/x-python | PythonLexer
# narrowcopies.py - extensions to mercurial copies module to support narrow
# clones
#
# Copyright 2017 Google, Inc.
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import absolute_import
from mercurial import (
copies,
extensions,
)
def setup(repo):
def _computeforwardmissing(orig, a, b, match=None):
missing = orig(a, b, match)
narrowmatch = repo.narrowmatch()
if narrowmatch.always():
return missing
missing = [f for f in missing if narrowmatch(f)]
return missing
def _checkcopies(orig, srcctx, dstctx, f, base, tca, remotebase, limit,
data):
narrowmatch = repo.narrowmatch()
if not narrowmatch(f):
return
orig(srcctx, dstctx, f, base, tca, remotebase, limit, data)
extensions.wrapfunction(copies, '_computeforwardmissing',
_computeforwardmissing)
extensions.wrapfunction(copies, '_checkcopies', _checkcopies)