diff -r a1e4fa9330d8 -r 421c9b3f2f4e mercurial/manifest.py --- a/mercurial/manifest.py Thu Aug 01 11:43:10 2024 -0400 +++ b/mercurial/manifest.py Thu Aug 01 13:38:31 2024 +0100 @@ -493,6 +493,9 @@ __bool__ = __nonzero__ + def set(self, key, node, flags): + self._lm[key] = node, flags + def __setitem__(self, key, node): self._lm[key] = node, self.flags(key) @@ -1048,6 +1051,26 @@ del self._flags[f] self._dirty = True + def set(self, f, node, flags): + """Set both the node and the flags for path f.""" + assert node is not None + if flags not in _manifestflags: + raise TypeError(b"Invalid manifest flag set.") + self._load() + dir, subpath = _splittopdir(f) + if dir: + self._loadlazy(dir) + if dir not in self._dirs: + self._dirs[dir] = treemanifest( + self.nodeconstants, self._subpath(dir) + ) + self._dirs[dir].set(subpath, node, flags) + else: + assert len(node) in (20, 32) + self._files[f] = node + self._flags[f] = flags + self._dirty = True + def __setitem__(self, f, n): assert n is not None self._load()