From 8fed7847e4e1bd9686e8d46641062aa5021207ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Wed, 12 Jan 2011 17:09:41 +0100 Subject: [PATCH] fallback to unexpanded diff mode on "osc diff" on merge error. Same behaviour as rdiff is doing. --- NEWS | 1 + osc/commandline.py | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 4502bfc6..856fe7f1 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ - add "createrequest -a add_group" option to create a group request - add "createrequest -a add_me" shortcut - add "less" command, doing the same as "osc cat" but with pager + - fallback to unexpanded diff mode on "osc diff" on merge error. 0.130 - new "revert" command to restore the original working copy file (without diff --git a/osc/commandline.py b/osc/commandline.py index 12014d9f..f3e780cb 100644 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -2662,8 +2662,26 @@ Please submit there instead, or use --nodevelproject to force direct submission. for i in pac.get_diff(rev1): sys.stdout.write(''.join(i)) else: - diff += server_diff(pac.apiurl, pac.prjname, pac.name, rev1, - pac.prjname, pac.name, rev2, not opts.plain, opts.missingok) + try: + diff += server_diff(pac.apiurl, pac.prjname, pac.name, rev1, + pac.prjname, pac.name, rev2, not opts.plain, opts.missingok) + except urllib2.HTTPError, e: + if not e.code in [ 400, 403, 404, 500 ]: + raise + + msg = None + body = None + try: + body = e.read() + if not 'bad link' in body: + raise e + except: + raise e + + diff = "## diff on expanded link not possible, showing unexpanded version\n" + diff += server_diff(pac.apiurl, pac.prjname, pac.name, rev1, + pac.prjname, pac.name, rev2, not opts.plain, opts.missingok, + expand=False) run_pager(diff)