Comments
Patch
@@ -148,17 +148,17 @@ class changelogrevision(object):
Changelog revisions consist of multiple pieces of data, including
the manifest node, user, and date. This object exposes a view into
the parsed object.
"""
__slots__ = (
'_rawdateextra',
'_rawdesc',
- 'files',
+ '_rawfiles',
'_rawmanifest',
'_rawuser',
)
def __new__(cls, text):
if not text:
return _changelogrevision(
manifest=nullid,
@@ -191,18 +191,22 @@ class changelogrevision(object):
self._rawmanifest = text[0:nl1]
nl2 = text.index('\n', nl1 + 1)
self._rawuser = text[nl1 + 1:nl2]
nl3 = text.index('\n', nl2 + 1)
self._rawdateextra = text[nl2 + 1:nl3]
- l = text[:doublenl].split('\n')
- self.files = l[3:]
+ # The list of files may be empty. Which means nl3 is the first of the
+ # double newline that precedes the description.
+ if nl3 == doublenl:
+ self._rawfiles = None
+ else:
+ self._rawfiles = text[nl3 + 1:doublenl]
return self
@property
def manifest(self):
return bin(self._rawmanifest)
@property
@@ -237,16 +241,23 @@ class changelogrevision(object):
def extra(self):
raw = self._rawextra
if raw is None:
return _defaultextra
return decodeextra(raw)
@property
+ def files(self):
+ if self._rawfiles is None:
+ return []
+
+ return self._rawfiles.split('\n')
+
+ @property
def description(self):
return encoding.tolocal(self._rawdesc)
class changelog(revlog.revlog):
def __init__(self, opener):
revlog.revlog.__init__(self, opener, "00changelog.i")
if self._initempty:
# changelogs don't benefit from generaldelta