jsvn: use internal colordiff() instead of "colordiff" executable for "diff"

This commit is contained in:
Josh Holtrop 2012-02-20 14:39:26 -05:00
parent 356dca5731
commit c455018cf1

28
jsvn
View File

@ -86,16 +86,24 @@ def ansi_reset(out):
out.write('\033[0m') out.write('\033[0m')
def colordiff(out, line): def colordiff(out, line):
if re.search(r'^Index:\s', line):
ansi_color(out, 'yellow')
out.write(line + '\n')
ansi_reset(out)
return
if re.match(r'={67}', line):
ansi_color(out, 'yellow')
out.write(line + '\n')
ansi_reset(out)
return
if re.search(r'^-', line): if re.search(r'^-', line):
ansi_color(out, 'red') ansi_color(out, 'red')
out.write(line) out.write(line + '\n')
out.write('\n')
ansi_reset(out) ansi_reset(out)
return return
elif re.search(r'^\+', line): elif re.search(r'^\+', line):
ansi_color(out, 'green') ansi_color(out, 'green')
out.write(line) out.write(line + '\n')
out.write('\n')
ansi_reset(out) ansi_reset(out)
return return
m = re.match(r'(@@.*@@)(.*)', line) m = re.match(r'(@@.*@@)(.*)', line)
@ -106,8 +114,7 @@ def colordiff(out, line):
out.write('\n') out.write('\n')
ansi_reset(out) ansi_reset(out)
return return
out.write(line) out.write(line + '\n')
out.write('\n')
def findInPath(cmd): def findInPath(cmd):
path_entries = os.environ['PATH'].split(os.pathsep) path_entries = os.environ['PATH'].split(os.pathsep)
@ -403,12 +410,9 @@ def lockable(argv, svn, out):
return RET_OK return RET_OK
def diff(argv, svn, out): def diff(argv, svn, out):
colordiff = findInPath('colordiff') for line in Popen([svn] + argv, stdout=PIPE).communicate()[0].split('\n'):
if colordiff != '': colordiff(out, line)
diff_out = Popen([svn] + argv, stdout=PIPE).stdout return RET_OK
Popen([colordiff], stdin=diff_out, stdout=out).wait()
return RET_OK
return RET_REEXEC
def log(argv, svn, out): def log(argv, svn, out):
in_diff = False in_diff = False