1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-11-13 07:56:14 +01:00

Merge pull request #1235 from dmach/fix-copypac-downgrade-to-revision

copypac: Fix downgrading a package to an old revision
This commit is contained in:
Daniel Mach 2023-01-26 13:20:32 +01:00 committed by GitHub
commit 71ce566b68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 5 deletions

View File

@ -18,6 +18,12 @@ Scenario: Run `osc copypac <project>/<package> <target-project>/<target-package>
Then the exit code is 0 Then the exit code is 0
@destructive
Scenario: Run `osc copypac <project>/<package> <project>/<package> --keep-link --revision`
When I execute osc with args "copypac test:factory/test-pkgA test:factory/test-pkgA --keep-link --revision=1"
Then the exit code is 0
Scenario: Run `osc copypac` where the source and target are the same Scenario: Run `osc copypac` where the source and target are the same
When I execute osc with args "copypac test:factory/test-pkgA test:factory" When I execute osc with args "copypac test:factory/test-pkgA test:factory"
Then the exit code is 1 Then the exit code is 1

View File

@ -3349,9 +3349,8 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if opts.message: if opts.message:
comment = opts.message comment = opts.message
else: else:
if not rev: src_rev = rev or show_upstream_rev(src_apiurl, src_project, src_package)
rev = show_upstream_rev(src_apiurl, src_project, src_package) comment = 'osc copypac from project:%s package:%s revision:%s' % (src_project, src_package, src_rev)
comment = 'osc copypac from project:%s package:%s revision:%s' % (src_project, src_package, rev)
if opts.keep_link: if opts.keep_link:
comment += ", using keep-link" comment += ", using keep-link"
if opts.expand: if opts.expand:

View File

@ -5959,8 +5959,10 @@ def copy_pac(
or by the server, in a single api call. or by the server, in a single api call.
""" """
if (src_apiurl, src_project, src_package) == (dst_apiurl, dst_project, dst_package): if (src_apiurl, src_project, src_package) == (dst_apiurl, dst_project, dst_package):
# copypac is also used to expand sources, let's allow that # special cases when source and target can be the same:
if not expand: # * expanding sources
# * downgrading package to an old revision
if not any([expand, revision]):
raise oscerr.OscValueError("Cannot copy package. Source and target are the same.") raise oscerr.OscValueError("Cannot copy package. Source and target are the same.")
if not (src_apiurl == dst_apiurl and src_project == dst_project if not (src_apiurl == dst_apiurl and src_project == dst_project