<div class="container">
<h1>Recommended update for osc</h1>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<th>Announcement ID:</th>
<td>SUSE-RU-2026:0702-1</td>
</tr>
<tr>
<th>Release Date:</th>
<td>2026-02-28T09:59:13Z</td>
</tr>
<tr>
<th>Rating:</th>
<td>moderate</td>
</tr>
<tr>
<th>References:</th>
<td>
<ul>
</ul>
</td>
</tr>
<tr>
<th>Affected Products:</th>
<td>
<ul class="list-group">
<li class="list-group-item">Development Tools Module 15-SP7</li>
<li class="list-group-item">openSUSE Leap 15.6</li>
<li class="list-group-item">SUSE Linux Enterprise Desktop 15 SP7</li>
<li class="list-group-item">SUSE Linux Enterprise Real Time 15 SP7</li>
<li class="list-group-item">SUSE Linux Enterprise Server 15 SP7</li>
<li class="list-group-item">SUSE Linux Enterprise Server for SAP Applications 15 SP7</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>An update that can now be installed.</p>
<h2>Description:</h2>
<p>This update for osc fixes the following issues:</p>
<p>osc was updated to 1.22.0:</p>
<ul>
<li>
<p>Command-line:</p>
<ul>
<li>Add 'git-obs staging' commands</li>
<li>Add '--gitea-fork-org' option to 'osc fork' command</li>
<li>Add '--git-branch' option to 'osc fork' command</li>
<li>Add 'DELETE' to 'git-obs api' allowed methods</li>
<li>Add commit messages as commented lines to the template in 'git-obs pr create'</li>
<li>Add filtering by label to 'git-obs pr list'</li>
<li>Properly handle fork mismatch in 'osc fork'</li>
<li>Change 'osc build' to build from any git repo if '--alternative-project' is specified</li>
<li>Fix 'osc service' for git based packages</li>
<li>Fix 'git-obs pr dump' to skip the dump if the target has the same updated_at timestamp as the pull request in Gitea</li>
<li>Fix 'git-obs pr dump' to do case insensitive check on owner and repo</li>
<li>Fix retrieving 'arch' argument in 'osc buildlog'</li>
</ul>
</li>
<li>
<p>Library:</p>
<ul>
<li>Add 'status' to the output of gitea_api.Git.get_submodules()</li>
<li>Add 'remote' argument to gitea_api.Repo.clone_or_update()</li>
<li>Add gitea_api.common.TemporaryDirectory class that supports 'delete' argument on python 3.6+</li>
<li>Add gitea_api.GitDiffGenerator class for creating submodule diffs without a git checkout</li>
<li>Add 'depth' argument to gitea_api.Repo.clone() and clone_or_update()</li>
<li>Add gitea_api.StagingPullRequestWrapper class for handling staging</li>
<li>Add gitea_api.PullRequest.get_host_owner_repo_number() method</li>
<li>Make GitObsCommand.add_argument_owner_repo() and add_argument_owner_repo_pull() reusable by allowing setting 'dest' argument</li>
<li>Warn if the git package doesn't have the same branch as the parent project</li>
<li>Extend gitea_api.PullRequest with methods that work with 'PR:' references</li>
<li>Support setting labels in gitea_api.PullRequest.create()</li>
<li>Fix gitea_api to use pagination instead of limit -1 everywhere</li>
<li>Remove duplicate, unused PullRequestReview class from gitea_api.pr</li>
<li>Move clone_or_update() from 'git-obs pr dump' command to gitea_api.Repo</li>
<li>Change gitea_api.Repo.clone_or_update() to take 'ssh_private_key_path' argument</li>
<li>Improve performance of gitea_api.IssueTimelineEntry by listing and caching requests instead of fetching them one by one</li>
<li>Make GitObsCommand.add_argument_owner_repo() and add_argument_owner_repo_pull() reusable by allowing setting 'help' argument</li>
<li>Change gitea_api.Repo.clone() to stop borrowing objects when 'reference' or 'reference_if_able' is used</li>
<li>Fix the resulting dictionary in gitea_api.PullRequest._get_label_ids()</li>
<li>Make gitea_api.RepoExists exception more helpful by giving a hint to fork under a different name</li>
<li>Use server_diff() instead of server_diff_noex() to exit with a non-zero return code</li>
<li>Return preinstallimage.info and allow podman to use preinstallimage</li>
</ul>
</li>
</ul>
<p>Update to 1.21.0:</p>
<ul>
<li>
<p>Command-line:</p>
<ul>
<li>Modify osc subcommands to error out if they don't work with git</li>
<li>Add 'git-obs meta' commands for managing the local metadata</li>
<li>Add 'git-obs meta info' command for printing resolved metadata about the current checkout</li>
<li>Add -b/--branch option to 'git-obs repo clone' command</li>
<li>Add 'git-obs pr dump' command to store pull request information on disk</li>
<li>Add 'git-obs --quiet' option (that mutes printing gitea settings now)</li>
<li>Automatially pull meta after 'git-obs repo clone'</li>
<li>Change 'git-obs pr review interactive' to write 'merge ok' comment instead of scheduling a merge</li>
<li>Mute stderr when creating a worktree in 'git-obs pr review interactive'</li>
<li>Change 'git-obs -G' to accept url to select a gitea login entry</li>
<li>Support substitutions in 'osc build --root'</li>
<li>Fix crash in 'osc build' when 'build_repositories' in store was None</li>
<li>Fix filtering by reviewers in 'git-obs pr list'</li>
<li>Update 'osc rq show' command to include history comments in verbose mode</li>
</ul>
</li>
<li>
<p>Library:</p>
<ul>
<li>Refactor GitStore</li>
<li>Migrate git_scm.Store over to gitea_api.Git</li>
<li>Store buildinfo and buildconfig files in GitStore's cache instead directly in the repo</li>
<li>Move code from 'git-obs meta pull' command to GitStore.pull()</li>
<li>Improve GitStore.pull() to support reading project from project.build</li>
<li>Rephrase the error message about detached HEAD in GitStore</li>
<li>Improve GitStore's error messages by adding instructions on how to fix missing metadata</li>
<li>Be more permissive when loading parent project_store in GitStore</li>
<li>Fix loading _manifest in a project git</li>
<li>Fix git store to check if all the required fields are present</li>
<li>Derive package name from topdir if a package is part of a project checkout</li>
<li>Change 'git-obs pr review interactive' to run pager process as a context manager</li>
<li>Change obs_api.TarDiff to spawn a process extracting archives as a context manager</li>
<li>Change 'commit' argument in gitea_api.Git.reset() to optional</li>
<li>Add gitea_api.Git.get_owner_repo_from_url() staticmethod</li>
<li>Add gitea_api.Git.urljoin() static method</li>
<li>Fix gitea_api.Git.get_branch_head() to raise a proper exception if the HEAD cannot be retrieved</li>
<li>Fix gitea_api.Git to work with the current remote instead of 'origin'</li>
<li>Fix get_store() to throw the exception from git store if .osc directory is not present</li>
<li>Introduce GitObsRuntimeError exception and use it where appropriate</li>
<li>Fix tardiff by removing directories with shutil.rmtree() and files by os.unlink()</li>
<li>Add 'quiet' option to gitea_api.Git.switch()</li>
<li>Mute stderr in git_obs.Git.lfs_cat_file()</li>
<li>Treat None flavor as "" in multibuild resolve</li>
<li>Make Token.triggered_at optional as it's not available in the oficially released OBS code</li>
<li>Add BaseModel.from_string() and BaseModel.to_string() methods</li>
<li>Add BaseModel.from_file() and BaseModel.to_file() methods</li>
<li>Fix BaseModel to initialize from a dictionary via <strong>init</strong> instead of setattr</li>
</ul>
</li>
<li>
<p>Docs:</p>
<ul>
<li>Update docs for the new git metadata store</li>
<li>Update list of recommended gitea permissions in git-obs-quickstart</li>
</ul>
</li>
<li>
<p>Spec:</p>
<ul>
<li>Install git-obs-metadata man page</li>
</ul>
</li>
</ul>
<h2>Patch Instructions:</h2>
<p>
To install this SUSE update use the SUSE recommended
installation methods like YaST online_update or "zypper patch".<br/>
Alternatively you can run the command listed for your product:
</p>
<ul class="list-group">
<li class="list-group-item">
openSUSE Leap 15.6
<br/>
<code>zypper in -t patch SUSE-2026-702=1 openSUSE-SLE-15.6-2026-702=1</code>
</li>
<li class="list-group-item">
Development Tools Module 15-SP7
<br/>
<code>zypper in -t patch SUSE-SLE-Module-Development-Tools-15-SP7-2026-702=1</code>
</li>
</ul>
<h2>Package List:</h2>
<ul>
<li>
openSUSE Leap 15.6 (noarch)
<ul>
<li>osc-1.22.0-150600.15.9.1</li>
</ul>
</li>
<li>
Development Tools Module 15-SP7 (noarch)
<ul>
<li>osc-1.22.0-150600.15.9.1</li>
</ul>
</li>
</ul>
</div>