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
--- a/mercurial/context.py Tue Jul 31 13:53:06 2018 -0700
+++ b/mercurial/context.py Wed Jul 25 21:19:06 2018 +0300
@@ -2327,7 +2327,12 @@
revision being committed, or None."""
super(memfilectx, self).__init__(repo, path, None, changectx)
self._data = data
- self._flags = (islink and 'l' or '') + (isexec and 'x' or '')
+ if islink:
+ self._flags = 'l'
+ elif isexec:
+ self._flags = 'x'
+ else:
+ self._flags = ''
self._copied = None
if copied:
self._copied = (copied, nullid)