From a381db47eb61a5e4e40bd52c036589c333efe177 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Tue, 21 Feb 2012 15:13:46 -0500 Subject: [PATCH] jsvn: colorize changed paths in "log -v" --- jsvn | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/jsvn b/jsvn index 2ef2cab..fa68b38 100755 --- a/jsvn +++ b/jsvn @@ -418,10 +418,10 @@ def diff(argv, svn, out): return RET_OK def log(argv, svn, out): - in_diff = False + mode = 'normal' pout = Popen([svn] + argv, stdout=PIPE).stdout for line in iter(pout.readline, ''): - if re.match(r'(r\d+)\s+\|', line): + if mode == 'normal' and re.match(r'(r\d+)\s+\|', line): parts = line.split('|') if len(parts) == 4: ansi_color(out, 'blue', bold=True) @@ -437,17 +437,32 @@ def log(argv, svn, out): ansi_reset(out) out.write('|') out.write(parts[3]) + else: + out.write(line) + elif mode == 'normal' and re.match(r'Changed.paths:', line): + out.write(line) + mode = 'cp' + elif mode == 'cp' and re.search(r'^ [ADM] ', line): + action = line[3] + if action == 'A': + ansi_color(out, 'green') + elif action == 'D': + ansi_color(out, 'red') + elif action == 'M': + ansi_color(out, 'yellow') + out.write(line) + ansi_reset(out) elif re.match(r'-{72}', line): ansi_color(out, 'yellow') out.write(line) ansi_reset(out) - in_diff = False + mode = 'normal' elif re.match(r'={67}', line): ansi_color(out, 'yellow') out.write(line) ansi_reset(out) - in_diff = True - elif in_diff: + mode = 'diff' + elif mode == 'diff': colordiff(out, line) elif re.search(r'^Index:\s', line): ansi_color(out, 'yellow')