mercurial/manifest.py
changeset 24215 feddc5284724
parent 24184 cd66080ef6d4
child 24223 b4df0d0c49e7
--- 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):