D1238: overlayworkingctx: add _manifest, files(), added(), removed(), modified()
phillco (Phil Cohen)
phabricator at mercurial-scm.org
Fri Dec 8 01:38:10 EST 2017
phillco updated this revision to Diff 4230.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D1238?vs=4203&id=4230
REVISION DETAIL
https://phab.mercurial-scm.org/D1238
AFFECTED FILES
mercurial/context.py
CHANGE DETAILS
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -2014,6 +2014,43 @@
else:
return self._wrappedctx[path].data()
+ @propertycache
+ def _manifest(self):
+ parents = self.parents()
+ man = parents[0].manifest().copy()
+
+ flag = self._flagfunc
+ for path in self.added():
+ man[path] = addednodeid
+ man.setflag(path, flag(path))
+ for path in self.modified():
+ man[path] = modifiednodeid
+ man.setflag(path, flag(path))
+ for path in self.removed():
+ del man[path]
+ return man
+
+ @propertycache
+ def _flagfunc(self):
+ def f(path):
+ return self._cache[path]['flags']
+ return f
+
+ def files(self):
+ return sorted(self.added() + self.modified() + self.removed())
+
+ def modified(self):
+ return [f for f in self._cache.keys() if self._cache[f]['exists'] and
+ self._existsinparent(f)]
+
+ def added(self):
+ return [f for f in self._cache.keys() if self._cache[f]['exists'] and
+ not self._existsinparent(f)]
+
+ def removed(self):
+ return [f for f in self._cache.keys() if
+ not self._cache[f]['exists'] and self._existsinparent(f)]
+
def isinmemory(self):
return True
To: phillco, #hg-reviewers, durin42
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list