1
0
mirror of https://github.com/openSUSE/osc.git synced 2025-02-04 10:36:17 +01:00

Add more infos to issues rdiff

Show the state of the issues (added, deleted, changed)
of the issues in a list.

Also --xml can now be given to get the raw xml output from the server.
This commit is contained in:
lethliel 2020-06-15 17:18:52 +02:00
parent e807abbf7c
commit a1df48145b
2 changed files with 22 additions and 9 deletions

View File

@ -3932,6 +3932,8 @@ Please submit there instead, or use --nodevelproject to force direct submission.
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')
@cmdln.option('--xml', action='store_true',
help='show diff as xml (only for issues diff)')
def do_rdiff(self, subcmd, opts, *args):
"""${cmd_name}: Server-side "pretty" diff of two packages
@ -4009,9 +4011,10 @@ Please submit there instead, or use --nodevelproject to force direct submission.
new_project, new_package, rev2, not opts.plain, opts.missingok,
meta=opts.meta,
expand=not opts.unexpand,
onlyissues=opts.issues_only)
onlyissues=opts.issues_only,
xml=opts.xml)
if opts.issues_only:
print(rdiff)
print(decode_it(rdiff))
else:
run_pager(rdiff)

View File

@ -4822,7 +4822,7 @@ 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, expand=True, onlyissues=False, full=True):
unified=False, missingok=False, meta=False, expand=True, onlyissues=False, full=True, xml=False):
query = {'cmd': 'diff'}
if expand:
query['expand'] = 1
@ -4850,24 +4850,34 @@ def server_diff(apiurl,
u = makeurl(apiurl, ['source', new_project, new_package], query=query)
f = http_POST(u)
if onlyissues:
issue_list = []
if onlyissues and not xml:
del_issue_list = []
add_issue_list = []
chn_issue_list = []
root = ET.fromstring(f.read())
node = root.find('issues')
for issuenode in node.findall('issue'):
issue_list.append(issuenode.get('label'))
return '\n'.join(issue_list)
if issuenode.get('state') == 'deleted':
del_issue_list.append(issuenode.get('label'))
elif issuenode.get('state') == 'added':
add_issue_list.append(issuenode.get('label'))
else:
chn_issue_list.append(issuenode.get('label'))
string = 'added:\n----------\n' + '\n'.join(add_issue_list) + \
'\n\nchanged:\n----------\n' + '\n'.join(chn_issue_list) + \
'\n\ndeleted:\n----------\n' + '\n'.join(del_issue_list)
return string
return f.read()
def server_diff_noex(apiurl,
old_project, old_package, old_revision,
new_project, new_package, new_revision,
unified=False, missingok=False, meta=False, expand=True, onlyissues=False):
unified=False, missingok=False, meta=False, expand=True, onlyissues=False, xml=False):
try:
return server_diff(apiurl,
old_project, old_package, old_revision,
new_project, new_package, new_revision,
unified, missingok, meta, expand, onlyissues)
unified, missingok, meta, expand, onlyissues, True, xml)
except HTTPError as e:
msg = None
body = None