From 36c0245e80301cd7846fc8e9e0fb94f95beac4d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrian=20Schr=C3=B6ter?= Date: Tue, 7 Sep 2010 15:03:01 +0200 Subject: [PATCH] fix usage of linkrev in show_xsrcmd5 function. make usage of linkrev=base options in setlinkrev. --- osc/commandline.py | 11 ++++++++--- osc/core.py | 17 ++++++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/osc/commandline.py b/osc/commandline.py index 8c305665..a208dd6b 100644 --- a/osc/commandline.py +++ b/osc/commandline.py @@ -1873,6 +1873,8 @@ Please submit there instead, or use --nodevelproject to force direct submission. help='use the specified revision.') @cmdln.option('-R', '--use-plain-revision', action='store_true', help='Don\'t expand revsion based on baserev, the revision which was used when commit happened.') + @cmdln.option('-b', '--use-baserev', action='store_true', + help='Use the revisions which exists when the original commit happend and don\'t try to merge later commits.') @cmdln.option('-u', '--unset', action='store_true', help='remove revision in link, it will point always to latest revision') def do_setlinkrev(self, subcmd, opts, *args): @@ -1890,7 +1892,8 @@ Please submit there instead, or use --nodevelproject to force direct submission. args = slash_split(args) apiurl = self.get_api_url() package = None - use_baserev = 1 + use_baserev = None + use_xsrcmd5 = 1 if len(args) == 0: p = findpacs(os.curdir)[0] project = p.prjname @@ -1913,7 +1916,9 @@ Please submit there instead, or use --nodevelproject to force direct submission. packages = meta_get_packagelist(apiurl, project) if opts.use_plain_revision: - use_baserev = None + use_xsrcmd5 = None + if opts.use_baserev: + use_baserev = 1 for p in packages: print "setting revision for package", p @@ -1921,7 +1926,7 @@ Please submit there instead, or use --nodevelproject to force direct submission. rev=-1 else: rev, dummy = parseRevisionOption(opts.revision) - set_link_rev(apiurl, project, p, revision = rev, use_baserev = use_baserev) + set_link_rev(apiurl, project, p, revision = rev, use_xsrcmd5 = use_xsrcmd5, use_baserev = use_baserev) def do_linktobranch(self, subcmd, opts, *args): diff --git a/osc/core.py b/osc/core.py index 5cc1992b..2d16cb8c 100644 --- a/osc/core.py +++ b/osc/core.py @@ -4854,7 +4854,7 @@ def search(apiurl, **kwargs): res[urlpath] = ET.parse(f).getroot() return res -def set_link_rev(apiurl, project, package, revision = None, use_baserev = None): +def set_link_rev(apiurl, project, package, revision = None, use_xsrcmd5 = None, use_baserev = None): url = makeurl(apiurl, ['source', project, package, '_link']) try: f = http_GET(url) @@ -4873,8 +4873,19 @@ def set_link_rev(apiurl, project, package, revision = None, use_baserev = None): else: root.attrib['rev'] = revision - if use_baserev: - root.attrib['rev'] = show_upstream_xsrcmd5(apiurl, src_project, src_package, revision=root.attrib['rev'], linkrev='base' ) + if use_xsrcmd5: + if use_baserev: + try: + root.attrib['rev'] = 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: + root.attrib['rev'] = 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 l = ET.tostring(root) # upload _link file again