def diff(self, ctx, ref=None): maxdiff = int(self.ui.config('notify', 'maxdiff', 300)) prev = ctx.p1().node() if ref: ref = ref.node() else: ref = ctx.node() chunks = patch.diff(self.repo, prev, ref, opts=patch.diffallopts(self.ui)) difflines = ''.join(chunks).splitlines() if self.ui.configbool('notify', 'diffstat', True): s = patch.diffstat(difflines) # s may be nil, don't include the header if it is if s: self.ui.write('\ndiffstat:\n\n%s' % s) if maxdiff == 0: return elif maxdiff > 0 and len(difflines) > maxdiff: msg = _('\ndiffs (truncated from %d to %d lines):\n\n') self.ui.write(msg % (len(difflines), maxdiff)) difflines = difflines[:maxdiff] elif difflines: self.ui.write(_('\ndiffs (%d lines):\n\n') % len(difflines)) self.ui.write("\n".join(difflines))
def diff(self, ctx, ref=None): maxdiff = int(self.ui.config(b'notify', b'maxdiff')) prev = ctx.p1().node() if ref: ref = ref.node() else: ref = ctx.node() diffopts = patch.diffallopts(self.ui) diffopts.showfunc = self.showfunc chunks = patch.diff(self.repo, prev, ref, opts=diffopts) difflines = b''.join(chunks).splitlines() if self.ui.configbool(b'notify', b'diffstat'): maxdiffstat = int(self.ui.config(b'notify', b'maxdiffstat')) s = patch.diffstat(difflines) # s may be nil, don't include the header if it is if s: if maxdiffstat >= 0 and s.count(b"\n") > maxdiffstat + 1: s = s.split(b"\n") msg = _(b'\ndiffstat (truncated from %d to %d lines):\n\n') self.ui.write(msg % (len(s) - 2, maxdiffstat)) self.ui.write(b"\n".join(s[:maxdiffstat] + s[-2:])) else: self.ui.write(_(b'\ndiffstat:\n\n%s') % s) if maxdiff == 0: return elif maxdiff > 0 and len(difflines) > maxdiff: msg = _(b'\ndiffs (truncated from %d to %d lines):\n\n') self.ui.write(msg % (len(difflines), maxdiff)) difflines = difflines[:maxdiff] elif difflines: self.ui.write(_(b'\ndiffs (%d lines):\n\n') % len(difflines)) self.ui.write(b"\n".join(difflines))