Contrib/osc-contrib
osc contrib
The osc command is extensible, so there's a osc-contrib
plugin, which makes things easier. Unless the osc it contains only a subset of specialized commands for Contrib only.
All commands begins with osc contrib
(or osc cb
) prefix.
The osc-contrib package is available in a Contrib itself, so just add the Contrib repository and install the package.
Process
New package request
osc contrib new
If you are in the package dir, this is enough. You can also specify a new package name in argument. If you are not in a package dir, then you have to specify a source project and a package name (and as a last argument a new package name).
Show of opened requests
osc contrib show
This command shows you all opened requests. If you are a maintainer, you are interested at it.
Review process
osc contrib checkout package|ID
This will save a package to local disc. You could use a package name, or a request's ID as argument.
vi spec_file # review the spec osc contrib build ...
The last command is for a test build againts Contrib. This checks, that package is correct and there are not missing build dependencies. It's and equivalent of osc build --alternative-project=openSUSE:Factory:Contrib standard
but it's shorter (and it's an original purpose of this tool, reduce an amount of typing)
Decision
osc contrib accept|decline package|ID
Note: the -m "message" is mandatory. Only the accept will work without it. You could use a package name, or a request's ID as argument.
Command help
For help type
osc cb --help
and you will get a complete help for all available commands. Please note that this documentation should be older than current described version (0.1.6) of osc-contrib
. Help is actual with a current state.
show
osc contrib show [-f|--full-view] [-s|--state] [PACKAGE]
The 'show' command shows all new requests opened for Contrib. The default output is compact, so for a full view (like osc submitreq show ID
) you have to type -f argument. With argument '-s' you could list other requests, not only the new ones. For complete list of all requests type -s 'any'
.
The optional parameter PACKAGE will filter a result only for selected package.
Examples
Show all opened requests:
osc cb show 4940 new (saigkill) home:saigkill/kde4-skrooge -> openSUSE:Factory:Contrib 'add kde4-skrooge'
A full view
osc cb show -f Request to submit (sri4940): home:saigkill/kde4-skrooge -> openSUSE:Factory:Contrib/kde4-skrooge Source revision MD5: 8bdef461a88807a4672d8d3e86c0b9b0 Message: add kde4-skrooge State: new 2009-01-12T01:28:45 saigkill Comment: None
View of all requests
osc cb show -s 'any' 4908 declined (elvigia) home:m4r3k:fatrat/libgloox -> openSUSE:Factory:Contrib 'new library needed for fatrat :-)' 4916 accepted (mvyskocil) home:saigkill/lynis -> openSUSE:Factory:Contrib 'add lynis' 4918 accepted (mvyskocil) home:saigkill/rkhunter -> openSUSE:Factory:Contrib 'add rkhunter' 4927 accepted (elvigia) home:m4r3k:fatrat/libgloox -> openSUSE:Factory:Contrib 4940 new (saigkill) home:saigkill/kde4-skrooge -> openSUSE:Factory:Contrib 'add kde4-skrooge' 4954 accepted (puzel) Java:esmska/esmska -> openSUSE:Factory:Contrib "please add a 'esmska' to Contrib"
View all requests for one package
osc cb show -s 'any' scheme48 4390 declined (puzel) home:mvyskocil:Contrib/scheme48 -> openSUSE:Factory:Contrib 'add scheme48' 4704 accepted (puzel) home:mvyskocil:Contrib/scheme48 -> openSUSE:Factory:Contrib 'Fixed version, now use RPM_OPT_FLAGS and all gcc and warnings errors has been fixed.'
new
osc contrib new [-m|--message] [DEST_PACKAGE] osc contrib new [-m|--message] PROJECT PACKAGE [DEST_PACKAGE]
The first form of command is for case if the current directory is the package one. The information about source project and a package will be read from metadata, so the user doesn't have to specify them. The DEST_PACKAGE
should be used if the name of package in Contrib may be different.
The second form is intended to run from a common dir, because in that case it is not possible to read the metadata automatically. So the user needs to specify a source project and a package by hand. The new package name should be also given.
The argument [-m|message] is fully optional here.
checkout (co)
osc contrib checkout (co) [-l|--last] [-i|--id=ID] PACKAGE|ID
This download the requested package. This command is useful for reviewers, if they want to build the package in their local machine. The --last
and --id
are for handling of cases if the same package was requested several times (and all requests have a new state), so reviewer could specify a last request, or type an exact id. You could use a package name or a request ID as argument.
Note: this command download the package to the package/
directory, not to project/package/
as osc checkout
does!
Examples
Simple usage:
osc cb co esmska A /home/mvyskocil/work/contrib_test/esmska A /home/mvyskocil/work/contrib_test/esmska/esmska-0.12.2.tar.bz2 A /home/mvyskocil/work/contrib_test/esmska/esmska.desktop A /home/mvyskocil/work/contrib_test/esmska/esmska.spec
The package esmska is now in esmska directory.
How are the multiple requests handled:
osc cb co scheme48 There are multiple requests (4390, 4704) towards package scheme48. Specify one by -i/--id, or use -l/--last-request argument!
In this case you can use a osc cb co -i <ID>
or osc cb co -l scheme48
to checkout the last request, which is probably reasonable in most cases.
What if I specify a wrong id:
osc cb co -i 1234 scheme48 The package scheme48 and request id 1234 doesn't match! Use one of these (4390, 4704)
There's some minor error in output :), but the osc cb -i always check if the current id and a package name match!
request state change
osc contrib [accept|decline|revoke] PACKAGE|ID
It's an equivalent of osc submitreq [accept|decline|revoke] PACKAGE_REQ_ID
. Multiple requests could be handled via --last or --id argument. It's the same as in the 'new' command descibed above. You could use a package name or a request ID as argument.
The --message argument is mandatory for decline and revoke commands. For 'accept' exists a default one.
The accept command also do some additional job, which the original osc submitreq accept
doesn't. It warn if the current state of the requests was changed, so users have to manually commit his change. And for new packages it also set the requesting user as a new maintainer and a bugowner of package in Contrib, so the reviewer don't need to change it manually.
Options:
-i, --id id of request (if multiple exists) -l, --last use a last request (if multiple exists) -m, --message the submit message (optional for accept)
who is a maintainer/bugowner
osc cb maintainer/bugowner PACKAGE [PACKAGE2...]
Introduced in 0.1.5. Shows a maintainer/bugowner of specific package(s). Command prints a result as package:person. It has a -f/--full-view
option which shows an email.
Examples
Show maintainers of some packages
osc cb maintainer apg esmska apg: csbuild esmska: mvyskocil esmska: kamil_paral
Show an email
osc cb maintainer openproj -f openproj: mvyskocil, mvyskocil@novell.com
A bugowner command
osc cb bugowner openproj openproj: mvyskocil
build
osc cb build [ARCH]
Introduced in 0.1.6. It is an abbrev for osc build --alternative-project openSUSE:Factory:Contrib standard [ARCH]
and it serves for test build. So reviewer should be able to check, if package will work after accept. The optional argument is an architecture.
Comments, bugs, etc.
If you found a bug, just contact me (mvyskocil at suse cz). If you have a feature request, you could also contact me directly (patches are welcome ;-)), or it could be discussed in opensuse-contrib ML first.
Source code are available in a git repository on git.opensuse.org (gitweb).
For download, just type:
git clone git://git.opensuse.org/projects/osc-contrib.git