[![unit tests](https://github.com/openSUSE/osc/actions/workflows/unittests.yaml/badge.svg)](https://github.com/openSUSE/osc/actions/workflows/unittests.yaml) [![codecov](https://codecov.io/gh/openSUSE/osc/branch/master/graph/badge.svg)](https://codecov.io/gh/openSUSE/osc) [![code climate](https://codeclimate.com/github/openSUSE/osc.png)](https://codeclimate.com/github/openSUSE/osc) [![contributors](https://img.shields.io/github/contributors/openSUSE/osc.svg)](https://github.com/openSUSE/osc/graphs/contributors) # openSUSE Commander OpenSUSE Commander (osc) is a command-line interface to the [Open Build Service (OBS)](https://github.com/openSUSE/open-build-service/). ## Installation RPM packages are available in the [openSUSE:Tools](http://download.opensuse.org/repositories/openSUSE:/Tools/) repository. zypper addrepo --repo http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_Tumbleweed/openSUSE:Tools.repo zypper install osc To install from git, do ./setup.py build ./setup.py install # create a symlink `osc` in your path pointing to osc-wrapper.py. ln -s osc-wrapper.py /usr/local/bin/osc Alternatively, you can directly use `./osc-wrapper.py` from the source directory, which is easier if you develop on osc. ## Configuration When you use osc for the first time, it will ask you for your username and password, and store it in `~/.config/osc/oscrc`. ## Keyrings Osc can store passwords in keyrings instead of `~/.config/osc/oscrc`. To use them, you need python3-keyring with a backend of your choice installed: - kwalletd5 (A pasword manager for KDE) - secrets (A password manager for GNOME) - python3-keyring-keyutils (A python-keyring backend for the kernel keyring) If you want to switch to using a keyring you need to delete apiurl section from `~/.config/osc/oscrc` and you will be asked for credentials again, which will be then stored in the keyring application. ## Usage For more details please check the [openSUSE wiki](https://en.opensuse.org/openSUSE:OSC). To list existing content on the server osc ls # list projects osc ls Apache # list packages in a project osc ls Apache subversion # list files of package of a project Check out content osc co Apache # entire project osc co Apache subversion # a package osc co Apache subversion foo # single file Update a working copy osc up osc up [pac_dir] # update a single package by its path osc up * # from within a project dir, update all packages osc up # from within a project dir, update all packages # AND check out all newly added packages If an update can't be merged automatically, a file is in `C` (conflict) state, and conflicts are marked with special `<<<<<<<` and `>>>>>>>` lines. After manually resolving the problem, use osc resolved foo Upload change content osc ci # current dir osc ci