From 3f54237a7c2273cc23960eccb896cbba317850d3 Mon Sep 17 00:00:00 2001 From: Marcus Huewe Date: Tue, 22 Feb 2011 17:43:05 +0100 Subject: [PATCH] - rewrote set_link_rev --- osc/commandline.py | 28 ++++++++++++++-------------- osc/core.py | 45 +++++++++++++++++++-------------------------- 2 files changed, 33 insertions(+), 40 deletions(-) diff --git a/osc/commandline.py b/osc/commandline.py index e47e814a..25a71ab0 100644 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -2011,8 +2011,17 @@ Please submit there instead, or use --nodevelproject to force direct submission. args = slash_split(args) apiurl = self.get_api_url() package = None - use_baserev = None - use_xsrcmd5 = 1 + xsrcmd5 = True + baserev = False + if opts.use_plain_revision: + xsrcmd5 = False + if opts.use_baserev: + baserev = True + + rev = parseRevisionOption(opts.revision)[0] or '' + if opts.unset: + rev = None + if len(args) == 0: p = findpacs(os.curdir)[0] project = p.prjname @@ -2030,22 +2039,13 @@ Please submit there instead, or use --nodevelproject to force direct submission. + self.get_cmd_help('setlinkrev')) if package: - packages = [ package ] + packages = [package] else: packages = meta_get_packagelist(apiurl, project) - if opts.use_plain_revision: - use_xsrcmd5 = None - if opts.use_baserev: - use_baserev = 1 - for p in packages: - print "setting revision for package", p - if opts.unset: - rev=-1 - else: - rev, dummy = parseRevisionOption(opts.revision) - set_link_rev(apiurl, project, p, revision = rev, use_xsrcmd5 = use_xsrcmd5, use_baserev = use_baserev) + print 'setting revision for package %s' % p + set_link_rev(apiurl, project, p, revision=rev, xsrcmd5=xsrcmd5, baserev=baserev) def do_linktobranch(self, subcmd, opts, *args): diff --git a/osc/core.py b/osc/core.py index 1c28bef6..76537247 100644 --- a/osc/core.py +++ b/osc/core.py @@ -5409,7 +5409,12 @@ def search(apiurl, **kwargs): res[urlpath] = ET.parse(f).getroot() return res -def set_link_rev(apiurl, project, package, revision = None, use_xsrcmd5 = None, use_baserev = None): +def set_link_rev(apiurl, project, package, revision='', xsrcmd5=False, baserev=False): + """ + updates the rev attribute of the _link xml. If revision is set to None + the rev attribute is removed from the _link xml. If revision is set to '' + the "plain" upstream revision is used (if xsrcmd5 and baserev aren't specified). + """ url = makeurl(apiurl, ['source', project, package, '_link']) try: f = http_GET(url) @@ -5419,34 +5424,22 @@ def set_link_rev(apiurl, project, package, revision = None, use_xsrcmd5 = None, raise # set revision element - src_project = root.attrib['project'] - src_package = root.attrib['package'] - xsrcmd5 = None - if not revision: - root.attrib['rev'] = show_upstream_rev(apiurl, src_project, src_package) - elif revision == -1: - del root.attrib['rev'] - else: - root.attrib['rev'] = revision + src_project = root.get('project', project) + src_package = root.get('package') + if revision is None: + if 'rev' in root.keys(): + del root.attrib['rev'] + elif baserev: + revision = show_upstream_xsrcmd5(apiurl, src_project, src_package, linkrev='base') + elif xsrcmd5: + revision = show_upstream_xsrcmd5(apiurl, src_project, src_package) + elif revision == '': + revision = show_upstream_rev(apiurl, src_project, src_package) - if use_xsrcmd5: - if use_baserev: - try: - xsrcmd5 = show_upstream_xsrcmd5(apiurl, src_project, src_package, revision=root.attrib['rev'], linkrev='base' ) - except oscerr.LinkExpandError, e: - e.osc_msg = 'Unable to merge packages via links from package \'%s\' for project \'%s\'. These revisions have never worked!' % (package, project) - raise - else: - try: - xsrcmd5 = show_upstream_xsrcmd5(apiurl, src_project, src_package, revision=root.attrib['rev'] ) - except oscerr.LinkExpandError, e: - e.osc_msg = 'Unable to merge packages via links from package \'%s\' for project \'%s\'. Please try again using baserev to use source revisions when created the commits.' % (package, project) - raise - if xsrcmd5: - root.attrib['rev'] = xsrcmd5 + if revision: + root.set('rev', revision) l = ET.tostring(root) - # upload _link file again http_PUT(url, data=l)