D8369: manifest: teach treemanifest about long hashes
durin42 (Augie Fackler)
phabricator at mercurial-scm.org
Tue Apr 14 15:29:23 UTC 2020
durin42 updated this revision to Diff 21051.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D8369?vs=20972&id=21051
BRANCH
default
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D8369/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D8369
AFFECTED FILES
mercurial/manifest.py
CHANGE DETAILS
diff --git a/mercurial/manifest.py b/mercurial/manifest.py
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -1027,7 +1027,12 @@
self._dirs[dir] = treemanifest(self._subpath(dir))
self._dirs[dir].__setitem__(subpath, n)
else:
- self._files[f] = n[:21] # to match manifestdict's behavior
+ # manifest nodes are either 20 bytes or 32 bytes,
+ # depending on the hash in use. An extra byte is
+ # occasionally used by hg, but won't ever be
+ # persisted. Trim to 21 or 33 bytes as appropriate.
+ trim = 21 if len(n) < 25 else 33
+ self._files[f] = n[:trim] # to match manifestdict's behavior
self._dirty = True
def _load(self):
To: durin42, #hg-reviewers, Alphare
Cc: Alphare, mercurial-devel
More information about the Mercurial-devel
mailing list