[PATCH 3 of 8] obsolete: helper class to access obsolete marker data

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Thu Jun 7 17:24:54 UTC 2012


# HG changeset patch
# User Pierre-Yves.David at ens-lyon.org
# Date 1339089598 -7200
# Node ID 4ca996519709006862a9c6ed583f9de374022c06
# Parent  e94318746f0c2c66e379e0290ea41b475d530f7c
obsolete: helper class to access obsolete marker data

diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -118,10 +118,38 @@ def decodemeta(data):
         if l:
             key, value = l.split(':')
             d[key] = value
     return d
 
+class marker(object):
+    """Wrap obsolete marker raw data"""
+
+    def __init__(self, repo, data):
+        # the repo argument will be used to create changectx in later version
+        self._repo = repo
+        self._data = data
+        self._decodedmeta = None
+
+    def precnode(self):
+        """Precursor changeset node identifier"""
+        return self._data[0]
+
+    def succnodes(self):
+        """List of successor changesets node identifiers"""
+        return self._data[1]
+
+    def metadata(self):
+        """Decoded metadata dictionary"""
+        if self._decodedmeta is None:
+            self._decodedmeta = decodemeta(self._data[3])
+        return self._decodedmeta
+
+    def date(self):
+        """Creation date as (unixtime, offset)"""
+        parts = self.metadata()['date'].split(' ')
+        return (float(parts[0]), int(parts[1]))
+
 class obsstore(object):
     """Store obsolete markers
 
     Markers can be accessed with two mappings:
     - precursors: old -> set(new)



More information about the Mercurial-devel mailing list