# HG changeset patch # User Martin von Zweigbergk # Date 2018-03-26 04:32:16 # Node ID 041d829575ede0abee081eb57b5cb9f46dc47f92 # Parent 1c1c4ef8b72e39f5ed1c62dc4e31e02e9e08b652 context: add specialized way of getting copy source file only I'm working on support for storing copy metadata in the changeset instead of the filelog. I don't intend to include the file nodeid there, but most callers don't need that anyway. This patch introduces a method similar to ctx.renamed(), but the new method returns only the source filename, not the nodeid. Subsequent patches will move callers over to this new method. Differential Revision: https://phab.mercurial-scm.org/D6008 diff --git a/hgext/remotefilelog/remotefilectx.py b/hgext/remotefilelog/remotefilectx.py --- a/hgext/remotefilelog/remotefilectx.py +++ b/hgext/remotefilelog/remotefilectx.py @@ -136,6 +136,10 @@ class remotefilectx(context.filectx): pass return renamed + def copysource(self): + copy = self.renamed() + return copy and copy[0] + def ancestormap(self): if not self._ancestormap: self._ancestormap = self.filelog().ancestormap(self._filenode) diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -691,6 +691,8 @@ class basefilectx(object): return self._changectx def renamed(self): return self._copied + def copysource(self): + return self._copied and self._copied[0] def repo(self): return self._repo def size(self): @@ -1703,6 +1705,8 @@ class workingfilectx(committablefilectx) if not rp: return None return rp, self._changectx._parents[0]._manifest.get(rp, nullid) + def copysource(self): + return self._repo.dirstate.copied(self._path) def size(self): return self._repo.wvfs.lstat(self._path).st_size @@ -2148,6 +2152,9 @@ class overlayworkingfilectx(committablef return None return path, self._changectx._parents[0]._manifest.get(path, nullid) + def copysource(self): + return self._parent.copydata(self._path) + def size(self): return self._parent.size(self._path)