# HG changeset patch # User Pierre-Yves David # Date 2019-09-26 22:11:03 # Node ID 8af909893188fb4000a5704be6c39234ee1e8c64 # Parent 15badd621825e3b112b95f3bb46f8090f95adc0c context: clarify the various mode in the _copies property cache The previous code was compact but a bit dense. The new proposed code deal with each mode separately, there are some duplicated lines, but the meaning of each mode stand out. One of the benefit it to make it simpler to add further mode in the future. Differential Revision: https://phab.mercurial-scm.org/D6933 diff --git a/mercurial/context.py b/mercurial/context.py --- a/mercurial/context.py +++ b/mercurial/context.py @@ -490,14 +490,22 @@ class changectx(basectx): # In compatibility mode, we return copy data from the changeset if # it was recorded there, and otherwise we fall back to getting it from # the filelogs (below). - if (source == 'changeset-only' or - (source == 'compatibility' and p1copies is not None)): - return p1copies or {}, p2copies or {} - - # Otherwise (config said to read only from filelog, or we are in - # compatiblity mode and there is not data in the changeset), we get - # the copy metadata from the filelogs. - return super(changectx, self)._copies + if source == 'changeset-only': + if p1copies is None: + p1copies = {} + if p2copies is None: + p2copies = {} + elif source == 'compatibility': + if p1copies is None: + # we are in compatiblity mode and there is not data in the + # changeset), we get the copy metadata from the filelogs. + p1copies, p2copies = super(changectx, self)._copies + else: + # config said to read only from filelog, we get the copy metadata + # from the filelogs. + p1copies, p2copies = super(changectx, self)._copies + return p1copies, p2copies + def description(self): return self._changeset.description def branch(self):