diff -r f3bcae1e9e23 -r 008e74b34fb7 mercurial/context.py --- a/mercurial/context.py Thu Sep 26 23:43:32 2019 +0200 +++ b/mercurial/context.py Fri Sep 27 00:06:02 2019 +0200 @@ -453,13 +453,20 @@ modified.difference_update(self.filesadded()) modified.difference_update(self.filesremoved()) return sorted(modified) + def filesadded(self): source = self._repo.ui.config('experimental', 'copies.read-from') - if (source == 'changeset-only' or - (source == 'compatibility' and - self._changeset.filesadded is not None)): - return self._changeset.filesadded or [] - return scmutil.computechangesetfilesadded(self) + filesadded = self._changeset.filesadded + if source == 'changeset-only': + if filesadded is None: + filesadded = [] + elif source == 'compatibility': + if filesadded is None: + filesadded = scmutil.computechangesetfilesadded(self) + else: + filesadded = scmutil.computechangesetfilesadded(self) + return filesadded + def filesremoved(self): source = self._repo.ui.config('experimental', 'copies.read-from') if (source == 'changeset-only' or