From 1150cede62e47f359749280699003e4d97611e06 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Wed, 27 Jun 2012 11:12:53 -0400 Subject: [PATCH] log: allow ".." syntax for specifying references --- jsvn | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/jsvn b/jsvn index 5b75829..23c3e60 100755 --- a/jsvn +++ b/jsvn @@ -728,12 +728,10 @@ def diff(argv, svn, out): ref1, operator, ref2 = m.group(1, 2, 3) url1, path1 = resolve_reference(svn, ref1) if url1 == '': - sys.stderr.write('Could not resolve reference "%s"\n' % ref1) - return RET_ERR + continue url2, path2 = resolve_reference(svn, ref2) if url2 == '': - sys.stderr.write('Could not resolve reference "%s"\n' % ref2) - return RET_ERR + continue if operator == '...': # amend url1 to include the pegged revision from where ref2 # originally branched from it @@ -751,6 +749,23 @@ def diff(argv, svn, out): return RET_OK def log(argv, svn, out): + for i, v in enumerate(argv): + m = re.match('(.*)(\.\.)(.*)$', v) + if m is not None: + ref1, operator, ref2 = m.group(1, 2, 3) + url1, path1 = resolve_reference(svn, ref1) + if url1 == '': + continue + url2, path2 = resolve_reference(svn, ref2) + if url2 == '': + continue + r = find_branched_revision(svn, url2, path2, path1) + if r < 0: + sys.stderr.write(('Could not find revision where "%s" ' + + 'branched from "%s"\n') % (ref2, ref1)) + return RET_ERR + argv = argv[:i] + ['-rHEAD:%d' % (r + 1), url2] + argv[i + 1:] + break mode = 'normal' pout = Popen([svn] + argv, stdout=PIPE).stdout for line in iter(pout.readline, ''):