diff --git a/mercurial/revlog.py b/mercurial/revlog.py index a418c5837bc05ddb3fa720753aa8da6ffeff1102_bWVyY3VyaWFsL3JldmxvZy5weQ==..0ab7f469d386ce50f6ba9f8a11c9bcde5cd2e290_bWVyY3VyaWFsL3JldmxvZy5weQ== 100644 --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -446,7 +446,16 @@ t = self.revision(rev, raw=True) return len(t) - size = rawsize + + def size(self, rev): + """length of non-raw text (processed by a "read" flag processor)""" + # fast path: if no "read" flag processor could change the content, + # size is rawsize. note: ELLIPSIS is known to not change the content. + flags = self.flags(rev) + if flags & (REVIDX_KNOWN_FLAGS ^ REVIDX_ELLIPSIS) == 0: + return self.rawsize(rev) + + return len(self.revision(rev, raw=False)) def chainbase(self, rev): base = self._chainbasecache.get(rev) diff --git a/tests/test-flagprocessor.t b/tests/test-flagprocessor.t index a418c5837bc05ddb3fa720753aa8da6ffeff1102_dGVzdHMvdGVzdC1mbGFncHJvY2Vzc29yLnQ=..0ab7f469d386ce50f6ba9f8a11c9bcde5cd2e290_dGVzdHMvdGVzdC1mbGFncHJvY2Vzc29yLnQ= 100644 --- a/tests/test-flagprocessor.t +++ b/tests/test-flagprocessor.t @@ -244,5 +244,4 @@ # TEST: hg status $ hg status - M base64 $ hg diff