manifest: remove a 20-byte-hash assumption from pure manifest parsing
authorAugie Fackler <augie@google.com>
Tue, 07 Jan 2020 11:25:13 -0500
changeset 44701 ecbba7b2e444
parent 44700 7834da4b00fa
child 44702 0b0e72b5d551
manifest: remove a 20-byte-hash assumption from pure manifest parsing This is almost certainly slower, but it shouldn't be by much. We need to do this for the eventual hash transition, no matter what that looks like. Differential Revision: https://phab.mercurial-scm.org/D8367
mercurial/manifest.py
--- a/mercurial/manifest.py	Mon Apr 13 12:18:29 2020 -0400
+++ b/mercurial/manifest.py	Tue Jan 07 11:25:13 2020 -0500
@@ -386,7 +386,11 @@
         self.extradata = []
 
     def _pack(self, d):
-        return d[0] + b'\x00' + hex(d[1][:20]) + d[2] + b'\n'
+        n = d[1]
+        if len(n) == 21 or len(n) == 33:
+            n = n[:-1]
+        assert len(n) == 20 or len(n) == 32
+        return d[0] + b'\x00' + hex(n) + d[2] + b'\n'
 
     def text(self):
         self._compact()