diff -r a5f1bccd2996 -r feddc5284724 mercurial/manifest.py --- a/mercurial/manifest.py Tue Jan 13 14:31:38 2015 -0800 +++ b/mercurial/manifest.py Fri Mar 06 17:00:42 2015 -0600 @@ -217,9 +217,23 @@ + content for start, end, content in x) return deltatext, newaddlist +# Pure Python fallback +def _parsemanifest(mfdict, fdict, lines): + bin = revlog.bin + for l in lines.splitlines(): + f, n = l.split('\0') + if len(n) > 40: + fdict[f] = n[40:] + mfdict[f] = bin(n[:40]) + else: + mfdict[f] = bin(n) + def _parse(lines): mfdict = manifestdict() - parsers.parse_manifest(mfdict, mfdict._flags, lines) + try: + parsers.parse_manifest(mfdict, mfdict._flags, lines) + except AttributeError: + _parsemanifest(mfdict, mfdict._flags, lines) return mfdict class manifest(revlog.revlog):