[PATCH 7 of 7 🚂] transaction: factorise append-only file registration
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Mon Nov 10 10:31:52 CST 2014
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1415182381 0
# Wed Nov 05 10:13:01 2014 +0000
# Node ID f7a9075b0999727f85493e9b61d9191f10111694
# Parent 7a4e0a8524b5efbf8eb0c6848bf316bfdfaa325b
transaction: factorise append-only file registration
The addition is done in two different places but differ slightly. We factorise
this addition to ensure it consistent in all place.
diff --git a/mercurial/transaction.py b/mercurial/transaction.py
--- a/mercurial/transaction.py
+++ b/mercurial/transaction.py
@@ -128,29 +128,28 @@ class transaction(object):
"""apply delayed registration of file entry.
This is used by strip to delay vision of strip offset. The transaction
see either none or all strip action to be done."""
q = self._queue.pop()
- self.entries.extend(q)
-
- offsets = []
- for f, o, _data in q:
- offsets.append((f, o))
-
- d = ''.join(['%s\0%d\n' % (f, o) for f, o in offsets])
- self.file.write(d)
- self.file.flush()
+ for f, o, data in q:
+ self._addentry(f, o, data)
@active
def add(self, file, offset, data=None):
"""record the state of an append-only file before update"""
if file in self.map or file in self._backupmap:
return
if self._queue:
self._queue[-1].append((file, offset, data))
return
+ self._addentry(file, offset, data)
+
+ def _addentry(self, file, offset, data):
+ """add a append-only entry to memory and on-disk state"""
+ if file in self.map or file in self._backupmap:
+ return
self.entries.append((file, offset, data))
self.map[file] = len(self.entries) - 1
# add enough data to the journal to do the truncate
self.file.write("%s\0%d\n" % (file, offset))
self.file.flush()
More information about the Mercurial-devel
mailing list