manifest: move manifestdict-to-text encoding to manifest class
authorAugie Fackler <raf@durin42.com>
Wed, 08 Oct 2014 14:47:30 -0400
changeset 22929 bf69cb09a6c9
parent 22928 5e5d297ccbd0
child 22930 1acb81d10eaf
manifest: move manifestdict-to-text encoding to manifest class A future patch will introduce a new format, with a new class.
mercurial/manifest.py
--- a/mercurial/manifest.py	Fri Oct 03 13:22:31 2014 -0700
+++ b/mercurial/manifest.py	Wed Oct 08 14:47:30 2014 -0400
@@ -40,6 +40,14 @@
     def flagsdiff(self, d2):
         return dicthelpers.diff(self._flags, d2._flags, "")
 
+    def text(self):
+        fl = sorted(self)
+        _checkforbidden(fl)
+
+        hex, flags = revlog.hex, self.flags
+        # if this is changed to support newlines in filenames,
+        # be sure to check the templates/ dir again (especially *-raw.tmpl)
+        return ''.join("%s\0%s%s\n" % (f, hex(self[f]), flags(f)) for f in fl)
 
 def _checkforbidden(l):
     """Check filenames for illegal characters."""
@@ -220,14 +228,7 @@
             # just encode a fulltext of the manifest and pass that
             # through to the revlog layer, and let it handle the delta
             # process.
-            files = sorted(map)
-            _checkforbidden(files)
-
-            # if this is changed to support newlines in filenames,
-            # be sure to check the templates/ dir again (especially *-raw.tmpl)
-            hex, flags = revlog.hex, map.flags
-            text = ''.join("%s\0%s%s\n" % (f, hex(map[f]), flags(f))
-                           for f in files)
+            text = map.text()
             arraytext = array.array('c', text)
             cachedelta = None