Mercurial > hg
view hgext/narrow/narrowcopies.py @ 38761:d558e53cd6b6 stable
context: safegaurd against 'lx' being passed as file flag in manifest
Subversion can have a file as executable link. When using hgsubversion, we will
have both islink and isexec True. This will lead to _flags being set to `lx`.
However, manifest expects flag to be one-byte so it will crash if 'lx' is
passed. Also it's impossible to have an executable link.
This patch will safegaurd us from having 'lx' being a possible value.
This was authored by Ivan Lezhankin from Yandex.
Differential Revision: https://phab.mercurial-scm.org/D3985
author | Pulkit Goyal <pulkit@yandex-team.ru> |
---|---|
date | Wed, 25 Jul 2018 21:19:06 +0300 |
parents | d0d5eef57fb0 |
children |
line wrap: on
line source
# 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)