mirror of
https://github.com/openSUSE/osc.git
synced 2025-02-02 17:56:15 +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.')
|
'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)
|
||||||
|
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user