1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-09-20 09:16:16 +02:00

retry rdiff on unexpanded sources if link expansion fails

This commit is contained in:
Ludwig Nussel 2010-10-19 15:25:25 +02:00
parent 5376580652
commit 78efea07eb
2 changed files with 29 additions and 5 deletions

View File

@ -2571,6 +2571,8 @@ Please submit there instead, or use --nodevelproject to force direct submission.
'If rev is negative this is like -r rev:rev-1.') 'If rev is negative this is like -r rev:rev-1.')
@cmdln.option('--missingok', action='store_true', @cmdln.option('--missingok', action='store_true',
help='do not fail if the source or target project/package does not exist on the server') help='do not fail if the source or target project/package does not exist on the server')
@cmdln.option('-u', '--unexpand', action='store_true',
help='diff unexpanded version if sources are linked')
def do_rdiff(self, subcmd, opts, *args): def do_rdiff(self, subcmd, opts, *args):
"""${cmd_name}: Server-side "pretty" diff of two packages """${cmd_name}: Server-side "pretty" diff of two packages
@ -2638,9 +2640,29 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if opts.revision: if opts.revision:
rev1, rev2 = parseRevisionOption(opts.revision) rev1, rev2 = parseRevisionOption(opts.revision)
try:
rdiff = server_diff(apiurl, rdiff = server_diff(apiurl,
old_project, old_package, rev1, old_project, old_package, rev1,
new_project, new_package, rev2, not opts.plain, opts.missingok) new_project, new_package, rev2, not opts.plain, opts.missingok,
expand=not opts.unexpand)
except urllib2.HTTPError, e:
if opts.unexpand or 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
rdiff = "## diff on expanded link not possible, showing unexpanded version\n"
rdiff += server_diff(apiurl,
old_project, old_package, rev1,
new_project, new_package, rev2, not opts.plain, opts.missingok,
expand=False)
run_pager(rdiff) run_pager(rdiff)
@cmdln.hide(1) @cmdln.hide(1)

View File

@ -3670,8 +3670,10 @@ def get_source_file_diff(dir, filename, rev, oldfilename = None, olddir = None,
def server_diff(apiurl, def server_diff(apiurl,
old_project, old_package, old_revision, old_project, old_package, old_revision,
new_project, new_package, new_revision, unified=False, missingok=False, meta=False): new_project, new_package, new_revision, unified=False, missingok=False, meta=False, expand=True):
query = {'cmd': 'diff', 'expand': '1'} query = {'cmd': 'diff'}
if expand:
query['expand'] = 1
if old_project: if old_project:
query['oproject'] = old_project query['oproject'] = old_project
if old_package: if old_package: