Mercurial > hg
changeset 45119:19748c73c208
manifest: use the same logic for handling flags in _parse as elsewhere
Differential Revision: https://phab.mercurial-scm.org/D8684
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Mon, 06 Jul 2020 14:49:19 +0200 |
parents | d0ef8c1dddd4 |
children | 44d5233e66a9 |
files | mercurial/manifest.py |
diffstat | 1 files changed, 9 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/manifest.py Mon Jul 06 03:43:32 2020 +0200 +++ b/mercurial/manifest.py Mon Jul 06 14:49:19 2020 +0200 @@ -58,14 +58,16 @@ prev = l f, n = l.split(b'\0') nl = len(n) - if 64 < nl: - # modern hash, full width - yield f, bin(n[:64]), n[64:] - elif 40 < nl < 45: - # legacy hash, always sha1 - yield f, bin(n[:40]), n[40:] + flags = n[-1:] + if flags in _manifestflags: + n = n[:-1] + nl -= 1 else: - yield f, bin(n), b'' + flags = b'' + if nl not in (40, 64): + raise ValueError(b'Invalid manifest line') + + yield f, bin(n), flags def _text(it):