D7893: nodemap: update the index with the newly written data (when appropriate)
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Fri Jan 31 18:02:12 EST 2020
marmoute updated this revision to Diff 19801.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7893?vs=19774&id=19801
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D7893/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D7893
AFFECTED FILES
mercurial/revlogutils/nodemap.py
CHANGE DETAILS
diff --git a/mercurial/revlogutils/nodemap.py b/mercurial/revlogutils/nodemap.py
--- a/mercurial/revlogutils/nodemap.py
+++ b/mercurial/revlogutils/nodemap.py
@@ -100,6 +100,8 @@
with revlog.opener(datafile, b'r+') as fd:
fd.seek(target_docket.data_length)
fd.write(data)
+ fd.seek(0)
+ new_data = fd.read(target_docket.data_length + len(data))
target_docket.data_length += len(data)
target_docket.data_unused += data_changed_count
@@ -113,6 +115,7 @@
data = persistent_data(revlog.index)
# EXP-TODO: if this is a cache, this should use a cache vfs, not a
# store vfs
+ new_data = data
with revlog.opener(datafile, b'w') as fd:
fd.write(data)
target_docket.data_length = len(data)
@@ -122,6 +125,9 @@
with revlog.opener(revlog.nodemap_file, b'w', atomictemp=True) as fp:
fp.write(target_docket.serialize())
revlog._nodemap_docket = target_docket
+ if util.safehasattr(revlog.index, "update_nodemap_data"):
+ revlog.index.update_nodemap_data(target_docket, new_data)
+
# EXP-TODO: if the transaction abort, we should remove the new data and
# reinstall the old one.
To: marmoute, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list