mercurial/context.py
changeset 43146 0171483b082f
parent 43117 8ff1ecfadcd1
child 43147 54e943b28101
equal deleted inserted replaced
43145:4296cc3c4ae1 43146:0171483b082f
   531         modified.difference_update(self.filesadded())
   531         modified.difference_update(self.filesadded())
   532         modified.difference_update(self.filesremoved())
   532         modified.difference_update(self.filesremoved())
   533         return sorted(modified)
   533         return sorted(modified)
   534 
   534 
   535     def filesadded(self):
   535     def filesadded(self):
   536         source = self._repo.ui.config(b'experimental', b'copies.read-from')
       
   537         filesadded = self._changeset.filesadded
   536         filesadded = self._changeset.filesadded
   538         if source == b'changeset-only':
   537         compute_on_none = True
   539             if filesadded is None:
   538         if self._repo.filecopiesmode == b'changeset-sidedata':
       
   539             compute_on_none = False
       
   540         else:
       
   541             source = self._repo.ui.config(b'experimental', b'copies.read-from')
       
   542             if source == b'changeset-only':
       
   543                 compute_on_none = False
       
   544             elif source != b'compatibility':
       
   545                 # filelog mode, ignore any changelog content
       
   546                 filesadded = None
       
   547         if filesadded is None:
       
   548             if compute_on_none:
       
   549                 filesadded = scmutil.computechangesetfilesadded(self)
       
   550             else:
   540                 filesadded = []
   551                 filesadded = []
   541         elif source == b'compatibility':
   552         return filesadded
   542             if filesadded is None:
   553 
   543                 filesadded = scmutil.computechangesetfilesadded(self)
   554     def filesremoved(self):
       
   555         filesremoved = self._changeset.filesremoved
       
   556         compute_on_none = True
       
   557         if self._repo.filecopiesmode == b'changeset-sidedata':
       
   558             compute_on_none = False
   544         else:
   559         else:
   545             filesadded = scmutil.computechangesetfilesadded(self)
   560             source = self._repo.ui.config(b'experimental', b'copies.read-from')
   546         return filesadded
   561             if source == b'changeset-only':
   547 
   562                 compute_on_none = False
   548     def filesremoved(self):
   563             elif source != b'compatibility':
   549         source = self._repo.ui.config(b'experimental', b'copies.read-from')
   564                 # filelog mode, ignore any changelog content
   550         filesremoved = self._changeset.filesremoved
   565                 filesremoved = None
   551         if source == b'changeset-only':
   566         if filesremoved is None:
   552             if filesremoved is None:
   567             if compute_on_none:
       
   568                 filesremoved = scmutil.computechangesetfilesremoved(self)
       
   569             else:
   553                 filesremoved = []
   570                 filesremoved = []
   554         elif source == b'compatibility':
       
   555             if filesremoved is None:
       
   556                 filesremoved = scmutil.computechangesetfilesremoved(self)
       
   557         else:
       
   558             filesremoved = scmutil.computechangesetfilesremoved(self)
       
   559         return filesremoved
   571         return filesremoved
   560 
   572 
   561     @propertycache
   573     @propertycache
   562     def _copies(self):
   574     def _copies(self):
   563         source = self._repo.ui.config(b'experimental', b'copies.read-from')
       
   564         p1copies = self._changeset.p1copies
   575         p1copies = self._changeset.p1copies
   565         p2copies = self._changeset.p2copies
   576         p2copies = self._changeset.p2copies
   566         # If config says to get copy metadata only from changeset, then return
   577         compute_on_none = True
   567         # that, defaulting to {} if there was no copy metadata.
   578         if self._repo.filecopiesmode == b'changeset-sidedata':
   568         # In compatibility mode, we return copy data from the changeset if
   579             compute_on_none = False
   569         # it was recorded there, and otherwise we fall back to getting it from
   580         else:
   570         # the filelogs (below).
   581             source = self._repo.ui.config(b'experimental', b'copies.read-from')
   571         if source == b'changeset-only':
   582             # If config says to get copy metadata only from changeset, then
   572             if p1copies is None:
   583             # return that, defaulting to {} if there was no copy metadata.  In
   573                 p1copies = {}
   584             # compatibility mode, we return copy data from the changeset if it
   574             if p2copies is None:
   585             # was recorded there, and otherwise we fall back to getting it from
   575                 p2copies = {}
   586             # the filelogs (below).
   576         elif source == b'compatibility':
   587             #
   577             if p1copies is None:
   588             # If we are in compatiblity mode and there is not data in the
   578                 # we are in compatiblity mode and there is not data in the
   589             # changeset), we get the copy metadata from the filelogs.
   579                 # changeset), we get the copy metadata from the filelogs.
   590             #
       
   591             # otherwise, when config said to read only from filelog, we get the
       
   592             # copy metadata from the filelogs.
       
   593             if source == b'changeset-only':
       
   594                 compute_on_none = False
       
   595             elif source != b'compatibility':
       
   596                 # filelog mode, ignore any changelog content
       
   597                 p1copies = p2copies = None
       
   598         if p1copies is None:
       
   599             if compute_on_none:
   580                 p1copies, p2copies = super(changectx, self)._copies
   600                 p1copies, p2copies = super(changectx, self)._copies
   581         else:
   601             else:
   582             # config said to read only from filelog, we get the copy metadata
   602                 if p1copies is None:
   583             # from the filelogs.
   603                     p1copies = {}
   584             p1copies, p2copies = super(changectx, self)._copies
   604         if p2copies is None:
       
   605             p2copies = {}
   585         return p1copies, p2copies
   606         return p1copies, p2copies
   586 
   607 
   587     def description(self):
   608     def description(self):
   588         return self._changeset.description
   609         return self._changeset.description
   589 
   610