mirror of
https://github.com/openSUSE/osc.git
synced 2025-02-02 09:46:16 +01:00
retry rdiff on unexpanded sources if link expansion fails
This commit is contained in:
parent
5376580652
commit
78efea07eb
@ -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.')
|
||||
@cmdln.option('--missingok', action='store_true',
|
||||
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):
|
||||
"""${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:
|
||||
rev1, rev2 = parseRevisionOption(opts.revision)
|
||||
|
||||
rdiff = server_diff(apiurl,
|
||||
old_project, old_package, rev1,
|
||||
new_project, new_package, rev2, not opts.plain, opts.missingok)
|
||||
try:
|
||||
rdiff = server_diff(apiurl,
|
||||
old_project, old_package, rev1,
|
||||
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)
|
||||
|
||||
@cmdln.hide(1)
|
||||
|
@ -3670,8 +3670,10 @@ def get_source_file_diff(dir, filename, rev, oldfilename = None, olddir = None,
|
||||
|
||||
def server_diff(apiurl,
|
||||
old_project, old_package, old_revision,
|
||||
new_project, new_package, new_revision, unified=False, missingok=False, meta=False):
|
||||
query = {'cmd': 'diff', 'expand': '1'}
|
||||
new_project, new_package, new_revision, unified=False, missingok=False, meta=False, expand=True):
|
||||
query = {'cmd': 'diff'}
|
||||
if expand:
|
||||
query['expand'] = 1
|
||||
if old_project:
|
||||
query['oproject'] = old_project
|
||||
if old_package:
|
||||
|
Loading…
Reference in New Issue
Block a user