diff --git a/osc/commandline.py b/osc/commandline.py index 09d3933d..e8c2a0b0 100644 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -7048,7 +7048,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. project = args[0] package = args[1] - rev, rev_upper = parseRevisionOption(opts.revision) + rev, rev_upper = parseRevisionOption(opts.revision, allow_md5=False) if rev and not checkRevision(project, package, rev, apiurl, opts.meta): print('Revision \'%s\' does not exist' % rev, file=sys.stderr) sys.exit(1) diff --git a/osc/core.py b/osc/core.py index 1914ca77..c67f906d 100644 --- a/osc/core.py +++ b/osc/core.py @@ -6699,32 +6699,22 @@ def cmdbuild(apiurl, cmd, project, package=None, arch=None, repo=None, code=None return root.get('code') -def parseRevisionOption(string): +def parseRevisionOption(string, allow_md5=True): """ returns a tuple which contains the revisions """ + revisions = [None, None] if string: - if ':' in string: - splitted_rev = string.split(':') - try: - for i in splitted_rev: - int(i) - return splitted_rev - except ValueError: + parts = string.split(':') + for i, revision in enumerate(parts[0:2], 0): + if revision.isdigit() or (allow_md5 and revision.isalnum() and len(revision) == 32): + revisions[i] = revision + elif revision != '' and revision != 'latest': print('your revision \'%s\' will be ignored' % string, file=sys.stderr) return None, None - else: - if string.isdigit(): - return string, None - elif string.isalnum() and len(string) == 32: - # could be an md5sum - return string, None - else: - print('your revision \'%s\' will be ignored' % string, file=sys.stderr) - return None, None - else: - return None, None + + return tuple(revisions) def checkRevision(prj, pac, revision, apiurl=None, meta=False): """