[PATCH 1 of 7] obsstore: add a `parents` field
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Tue Aug 19 00:49:31 UTC 2014
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1408403324 25200
# Mon Aug 18 16:08:44 2014 -0700
# Node ID d5fefc953f30affb41ce59289d6791b116169708
# Parent 3d33baa4c4269c682254d871039d7df1175b1856
obsstore: add a `parents` field
This fields is intended to store the parent of the precursor. This is useful to
attache pruned changeset to a set of exchanged changesets. We currently just
add the fields with a None value. None stand for "no data recorded".
diff --git a/mercurial/obsolete.py b/mercurial/obsolete.py
--- a/mercurial/obsolete.py
+++ b/mercurial/obsolete.py
@@ -168,11 +168,11 @@ def _readmarkers(data):
'short, %d bytes expected, got %d')
% (mdsize, len(metadata)))
off += mdsize
date = util.parsedate(decodemeta(metadata).pop('date', '0 0'))
- yield (pre, sucs, flags, metadata, date)
+ yield (pre, sucs, flags, metadata, date, None)
def encodemeta(meta):
"""Return encoded metadata string to string mapping.
Assume no ':' in key and no '\0' in both key and value."""
@@ -237,11 +237,11 @@ class obsstore(object):
Markers can be accessed with two mappings:
- precursors[x] -> set(markers on precursors edges of x)
- successors[x] -> set(markers on successors edges of x)
"""
- fields = ('prec', 'succs', 'flag', 'meta', 'date')
+ fields = ('prec', 'succs', 'flag', 'meta', 'date', 'parents')
def __init__(self, sopener):
# caches for various obsolescence related cache
self.caches = {}
self._all = []
@@ -290,11 +290,11 @@ class obsstore(object):
if len(succ) != 20:
raise ValueError(succ)
if prec in succs:
raise ValueError(_('in-marker cycle with %s') % node.hex(prec))
marker = (str(prec), tuple(succs), int(flag), encodemeta(metadata),
- date)
+ date, None)
return bool(self.add(transaction, [marker]))
def add(self, transaction, markers):
"""Add new markers to the store
@@ -354,11 +354,11 @@ def _encodemarkers(markers, addheader=Fa
for marker in markers:
yield _encodeonemarker(marker)
def _encodeonemarker(marker):
- pre, sucs, flags, metadata, date = marker
+ pre, sucs, flags, metadata, date, parents = marker
metadata = decodemeta(metadata)
metadata['date'] = '%d %i' % date
metadata = encodemeta(metadata)
nbsuc = len(sucs)
format = _fmfixed + (_fmnode * nbsuc)
More information about the Mercurial-devel
mailing list