diff mercurial/utils/storageutil.py @ 39880:1b65fb4d43d6

storageutil: new function for extracting metadata-less content from text Other storage backends will want to do this. I'm not concerned about Python function call overhead because I expect self.revision() to dwarf the function call overhead time, since self.revision() requires multiple function calls and may involve decompression in the common case. Differential Revision: https://phab.mercurial-scm.org/D4756
author Gregory Szorc <gregory.szorc@gmail.com>
date Mon, 24 Sep 2018 14:54:28 -0700
parents d269ddbf54f0
children d63153611ed5
line wrap: on
line diff
--- a/mercurial/utils/storageutil.py	Mon Sep 24 14:33:45 2018 -0700
+++ b/mercurial/utils/storageutil.py	Mon Sep 24 14:54:28 2018 -0700
@@ -69,3 +69,15 @@
 def iscensoredtext(text):
     meta = parsemeta(text)[0]
     return meta and b'censored' in meta
+
+def filtermetadata(text):
+    """Extract just the revision data from source text.
+
+    Returns ``text`` unless it has a metadata header, in which case we return
+    a new buffer without hte metadata.
+    """
+    if not text.startswith(b'\x01\n'):
+        return text
+
+    offset = text.index(b'\x01\n', 2)
+    return text[offset + 2:]