D7893: nodemap: update the index with the newly written data (when appropriate)
marmoute (Pierre-Yves David)
phabricator at mercurial-scm.org
Tue Feb 11 01:28:31 UTC 2020
Closed by commit rHG6ecc34b31137: nodemap: update the index with the newly written data (when appropriate) (authored by marmoute).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7893?vs=19905&id=20126
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