mercurial/changelog.py
changeset 43026 0b87eb2fba67
parent 42861 57ea0a81a65c
child 43027 041f042afcc5
equal deleted inserted replaced
43025:3518da504303 43026:0b87eb2fba67
   389         self._realopener = opener
   389         self._realopener = opener
   390         self._delayed = False
   390         self._delayed = False
   391         self._delaybuf = None
   391         self._delaybuf = None
   392         self._divert = False
   392         self._divert = False
   393         self.filteredrevs = frozenset()
   393         self.filteredrevs = frozenset()
       
   394         self._copiesstorage = opener.options.get('copies-storage')
   394 
   395 
   395     def tiprev(self):
   396     def tiprev(self):
   396         for i in pycompat.xrange(len(self) -1, -2, -1):
   397         for i in pycompat.xrange(len(self) -1, -2, -1):
   397             if i not in self.filteredrevs:
   398             if i not in self.filteredrevs:
   398                 return i
   399                 return i
   631             if branch in ("default", ""):
   632             if branch in ("default", ""):
   632                 del extra["branch"]
   633                 del extra["branch"]
   633             elif branch in (".", "null", "tip"):
   634             elif branch in (".", "null", "tip"):
   634                 raise error.StorageError(_('the name \'%s\' is reserved')
   635                 raise error.StorageError(_('the name \'%s\' is reserved')
   635                                          % branch)
   636                                          % branch)
   636         extrasentries = p1copies, p2copies, filesadded, filesremoved
       
   637         if extra is None and any(x is not None for x in extrasentries):
       
   638             extra = {}
       
   639         sortedfiles = sorted(files)
   637         sortedfiles = sorted(files)
   640         if extra is not None:
   638         if extra is not None:
   641             for name in ('p1copies', 'p2copies', 'filesadded', 'filesremoved'):
   639             for name in ('p1copies', 'p2copies', 'filesadded', 'filesremoved'):
   642                 extra.pop(name, None)
   640                 extra.pop(name, None)
   643         if p1copies is not None:
   641         if self._copiesstorage == 'extra':
   644             extra['p1copies'] = encodecopies(sortedfiles, p1copies)
   642             extrasentries = p1copies, p2copies, filesadded, filesremoved
   645         if p2copies is not None:
   643             if extra is None and any(x is not None for x in extrasentries):
   646             extra['p2copies'] = encodecopies(sortedfiles, p2copies)
   644                 extra = {}
   647         if filesadded is not None:
   645             if p1copies is not None:
   648             extra['filesadded'] = encodefileindices(sortedfiles, filesadded)
   646                 extra['p1copies'] = encodecopies(sortedfiles, p1copies)
   649         if filesremoved is not None:
   647             if p2copies is not None:
   650             extra['filesremoved'] = encodefileindices(sortedfiles, filesremoved)
   648                 extra['p2copies'] = encodecopies(sortedfiles, p2copies)
       
   649             if filesadded is not None:
       
   650                 extra['filesadded'] = encodefileindices(sortedfiles, filesadded)
       
   651             if filesremoved is not None:
       
   652                 extra['filesremoved'] = encodefileindices(sortedfiles, filesremoved)
   651 
   653 
   652         if extra:
   654         if extra:
   653             extra = encodeextra(extra)
   655             extra = encodeextra(extra)
   654             parseddate = "%s %s" % (parseddate, extra)
   656             parseddate = "%s %s" % (parseddate, extra)
   655         l = [hex(manifest), user, parseddate] + sortedfiles + ["", desc]
   657         l = [hex(manifest), user, parseddate] + sortedfiles + ["", desc]