* Mon Feb 23 2026 Daniel Mach <daniel.mach@suse.com>
- 1.24.0
- Command-line:
- Add '--target-owner' option to 'git-obs repo fork' command
- Add '--self' parameter to fix 'no matching parent repo' error message in 'git-obs pr create'
- Fix 'osc aggregatepac' for scmsync packages
- Fix 'osc build' to retrieve buildconfig from git package's cache
- Fix 'osc token' error handling for project wide trigger
- Fix string formatting for id in obs-request.xml in 'git-obs pr dump'
- Library:
- Consolidate build types in build.py and commandline.py
- Fix build.get_build_type() by comparing binary_type only if specified
- Make use of queryconfig tool configurable and consistent
- Fix how get_request_collection() filters the projects and packages
- Support copying packages from an scmsync source, when target exists
- Add timestamps to the DEBUG output
- Update new project template
* Thu Dec 18 2025 Daniel Mach <daniel.mach@suse.com>
- 1.23.0
- Command-line:
- Add '--target-owner' option to 'git-obs pr create' to specify the target owner explicitly
- Add '--target-branch' option to 'git-obs staging search' command
- Added 'git-obs staging search' command to find project PRs with referenced package PRs that have all been approved
- Change 'git-obs pr dump' to produce directories that match the specified pull request IDs
- Change 'git-obs pr dump' to write STATUS file
- Properly error out on invalid 'PR:' references in 'git-obs pr dump'
- Fix 'git-obs pr create' when the source repo is not a fork
- Fix 'git-obs api' command when server returns 'null'
- Fix 'osc build --alternative-project=...' when there's no .osc in the current directory
- Fix argument and store handling in 'osc results' command
- Library:
- Add Manifest.get_package_paths() method that lists all paths to existings packages in a project
- Fix Manifest class to handle loading empty YAML files or strings
- Fix working with meta during git rebase by determining the current branch from rebase head
- Fix handling local branch when fetching remote
- Move get_label_ids() from PullRequest to Repo class
- Change GitStore not to require apiurl anymore
- Fix storing last_buildroot for git packages
- Store the last buildroot only if there's a store detected
- Fix BuildRoot so it acts as a tuple and the individual values are accessible via indexes
- Make PullReqest.parse_id() more permissive by accepting trailing whitespaces
- Fix 'missingok' argument in server_diff()
- Fix gitea_api.PullRequest ordering methods
- Add return to gitea_api.Branch.list()
* Tue Dec 02 2025 Antonio Teixeira <antonio.teixeira@suse.com>
- PKGBUILD changes
* Remove redundant packages from makedepends. If a package depends
on something, it implicitly makedepends on it as well
* Add python-ruamel-yaml dependency
* Build and install man pages
* Add python-argparse-manpage and python-sphinx to makedepends for
building man pages
* Add check() to run the test suite
* Add checkdepends for test suite dependencies
* Add optdepends as an equivalent to RPM's Recommends, making it
easier for users to find packages needed for optional features
* Use $pkgname variable across the script
* Install shell completion files
* Bump pkgrel
* Mon Nov 10 2025 Daniel Mach <daniel.mach@suse.com>
- 1.22.0
- Command-line:
- Add 'git-obs staging' commands
- Add '--gitea-fork-org' option to 'osc fork' command
- Add '--git-branch' option to 'osc fork' command
- Add 'DELETE' to 'git-obs api' allowed methods
- Add commit messages as commented lines to the template in 'git-obs pr create'
- Add filtering by label to 'git-obs pr list'
- Properly handle fork mismatch in 'osc fork'
- Change 'osc build' to build from any git repo if '--alternative-project' is specified
- Fix 'osc service' for git based packages
- Fix 'git-obs pr dump' to skip the dump if the target has the same updated_at timestamp as the pull request in Gitea
- Fix 'git-obs pr dump' to do case insensitive check on owner and repo
- Fix retrieving 'arch' argument in 'osc buildlog'
- Library:
- Add 'status' to the output of gitea_api.Git.get_submodules()
- Add 'remote' argument to gitea_api.Repo.clone_or_update()
- Add gitea_api.common.TemporaryDirectory class that supports 'delete' argument on python 3.6+
- Add gitea_api.GitDiffGenerator class for creating submodule diffs without a git checkout
- Add 'depth' argument to gitea_api.Repo.clone() and clone_or_update()
- Add gitea_api.StagingPullRequestWrapper class for handling staging
- Add gitea_api.PullRequest.get_host_owner_repo_number() method
- Make GitObsCommand.add_argument_owner_repo() and add_argument_owner_repo_pull() reusable by allowing setting 'dest' argument
- Warn if the git package doesn't have the same branch as the parent project
- Extend gitea_api.PullRequest with methods that work with 'PR:' references
- Support setting labels in gitea_api.PullRequest.create()
- Fix gitea_api to use pagination instead of limit -1 everywhere
- Remove duplicate, unused PullRequestReview class from gitea_api.pr
- Move clone_or_update() from 'git-obs pr dump' command to gitea_api.Repo
- Change gitea_api.Repo.clone_or_update() to take 'ssh_private_key_path' argument
- Improve performance of gitea_api.IssueTimelineEntry by listing and caching requests instead of fetching them one by one
- Make GitObsCommand.add_argument_owner_repo() and add_argument_owner_repo_pull() reusable by allowing setting 'help' argument
- Change gitea_api.Repo.clone() to stop borrowing objects when 'reference' or 'reference_if_able' is used
- Fix the resulting dictionary in gitea_api.PullRequest._get_label_ids()
- Make gitea_api.RepoExists exception more helpful by giving a hint to fork under a different name
- Use server_diff() instead of server_diff_noex() to exit with a non-zero return code
- Return preinstallimage.info and allow podman to use preinstallimage
* Fri Oct 10 2025 Daniel Mach <daniel.mach@suse.com>
- 1.21.0
- Command-line:
- Modify osc subcommands to error out if they don't work with git
- Add 'git-obs meta' commands for managing the local metadata
- Add 'git-obs meta info' command for printing resolved metadata about the current checkout
- Add -b/--branch option to 'git-obs repo clone' command
- Add 'git-obs pr dump' command to store pull request information on disk
- Add 'git-obs --quiet' option (that mutes printing gitea settings now)
- Automatially pull meta after 'git-obs repo clone'
- Change 'git-obs pr review interactive' to write 'merge ok' comment instead of scheduling a merge
- Mute stderr when creating a worktree in 'git-obs pr review interactive'
- Change 'git-obs -G' to accept url to select a gitea login entry
- Support substitutions in 'osc build --root'
- Fix crash in 'osc build' when 'build_repositories' in store was None
- Fix filtering by reviewers in 'git-obs pr list'
- Update 'osc rq show' command to include history comments in verbose mode
- Library:
- Refactor GitStore
- Migrate git_scm.Store over to gitea_api.Git
- Store buildinfo and buildconfig files in GitStore's cache instead directly in the repo
- Move code from 'git-obs meta pull' command to GitStore.pull()
- Improve GitStore.pull() to support reading project from project.build
- Rephrase the error message about detached HEAD in GitStore
- Improve GitStore's error messages by adding instructions on how to fix missing metadata
- Be more permissive when loading parent project_store in GitStore
- Fix loading _manifest in a project git
- Fix git store to check if all the required fields are present
- Derive package name from topdir if a package is part of a project checkout
- Change 'git-obs pr review interactive' to run pager process as a context manager
- Change obs_api.TarDiff to spawn a process extracting archives as a context manager
- Change 'commit' argument in gitea_api.Git.reset() to optional
- Add gitea_api.Git.get_owner_repo_from_url() staticmethod
- Add gitea_api.Git.urljoin() static method
- Fix gitea_api.Git.get_branch_head() to raise a proper exception if the HEAD cannot be retrieved
- Fix gitea_api.Git to work with the current remote instead of 'origin'
- Fix get_store() to throw the exception from git store if .osc directory is not present
- Introduce GitObsRuntimeError exception and use it where appropriate
- Fix tardiff by removing directories with shutil.rmtree() and files by os.unlink()
- Add 'quiet' option to gitea_api.Git.switch()
- Mute stderr in git_obs.Git.lfs_cat_file()
- Treat None flavor as "" in multibuild resolve
- Make Token.triggered_at optional as it's not available in the oficially released OBS code
- Add BaseModel.from_string() and BaseModel.to_string() methods
- Add BaseModel.from_file() and BaseModel.to_file() methods
- Fix BaseModel to initialize from a dictionary via __init__ instead of setattr
- Docs:
- Update docs for the new git metadata store
- Update list of recommended gitea permissions in git-obs-quickstart
- Spec:
- Install git-obs-metadata man page
* Tue Sep 16 2025 Daniel Mach <daniel.mach@suse.com>
- 1.20.0
- Command-line:
- Fix 'osc fork' command to use the right tracking branch
- Fix 'osc blt' command by checking if the working copy is a package
- Make 'osc buildlog' work outside of osc package directory
- Add 'git-obs pr close' and 'git-obs pr reopen' commands
- Add 'close' option to 'git-obs pr review interactive'
- Change 'git-obs pr review interactive' to work with all archives, not only those in Git LFS
- Fix checkout of the base branch in 'git-obs pr review interactive' command
- Library:
- Support _manifest file in git store
- Allow pull request IDs in '<owner>/<repo>!<number>' format
- Properly handle deleted users and teams in the git-obs timeline
- Handle situations when there's 'None' among timeline entries
- Skip binary files in gitea_api.PullRequest.get_patch()
- Change get_user_input(), add support for vertically printed list of answers
- Spec:
- Provide git-obs
* Wed Aug 06 2025 Daniel Mach <daniel.mach@suse.com>
- 1.19.1
- Command-line:
- Use OSC_PACKAGE_CACHE_DIR env var instead of deprecated OSC_PACKAGECACHEDIR
- Connection:
- Check for both upper and lowercase versions of HTTP_PROXY and HTTPS_PROXY env vars
- Library:
- Add 'trackingbranch' field to ScmsyncObsinfo model
- Revert "Return None if GitStore cannot determine apiurl"
- Throw a proper exception when 'apiurl' argument of 'makeurl()' is empty
- Move code setting apiurl from store to 'osc.conf.get_config()'
- Simplify 'osc.commandline.Osc.get_api_url()' to return the value from 'self.options'
- Remove 'osc.commandline.Osc.post_argparse()' because it's no longer used
- Fix unit tests to use the new code path to run osc
- Fix osc.gitea_api.dt_sanitize() by replacing dateutil with datetime
* Mon Jul 28 2025 Daniel Mach <daniel.mach@suse.com>
- 1.19.0
- Command-line:
- Add 'git-obs pr cancel-scheduled-merge' command
- Add timeline to 'git-obs pr review interactive'
- Add '--timeline' option to 'git-obs pr get'
- Fix 'git-obs pr search' by using pagination to retrieve all results
- Extend '--message' option in git-obs subcommands with the '-m' short option
- Add a different message for scheduled merges in 'git-obs pr merge' command
- Library:
- Add 'conn' parameter to gitea_api.common.GiteaModel
- Add gitea_api.Connection.scheme attribute
- Add gitea_api.PullRequest.merge_commit property
- Add gitea_api.PullRequest.get_owner_repo_number()
- Add gitea_api.common.dt_sanitize() for sanitizing datetime strings
- Handle missing head repo in the PullRequest properties
- Return None if GitStore cannot determine apiurl
- Remove extra newline from store files
- Fix the 'Move remaining imports in osc.babysitter into try-except block' change by preserving the order of handling the exceptions
- Spec:
- Use primary_python to define runtime requires matching the shebang lines
- Provide %{use_python_pkg}-osc for all pythons and python3-osc for primary_python
- Add conflict with obs-scm-bridge < 0.7.3
* Tue Jul 22 2025 Daniel Mach <daniel.mach@suse.com>
- 1.18.0
- Command-line:
- Add 'git-obs pr comment [--message=...]' command
- Add 'git-obs pr show-patch' command
- Add '--reviewer' option to 'git-obs pr review {approve,decline,interactive}' to support group reviews via group review bot
- Update 'git-obs pr review interactive' to return non-zero return codes for 'exit' and 'skip' actions
- Make 'osc results --show-excluded' work in a project context
- Add '--no-pager' global option
- Fix 'osc fork' by copying whole query part to the new scmsync url
- Fix 'osc buildinfo' for git packages by handing the 'build_repositories' files by store objects
- Fix crash in 'git-obs pr get --patch'
- Fix git-obs to exit with 130 on keyboard interrupt
- Fix --sccache help typo in 'osc build' command
- Connection:
- Don't retry requests on 504 Gateway Timeout
- Library:
- If a devel project is not specified, try reading it from a mapping from URL set in OBS:GitDevelProjectMap project attribute
- Improve detection of packages and projects in git
- scmsync_obsinfo: Pass correct revision to obs-scm-bridge
- Add obs_api.Request.search() method
- Raise an exception if obs-scm-bridge fails
- Fix obs_scm.Package.get_pulled_srcmd5() returning an empty string
- Fix git store to support non-default remote
- Extend 'gitea_api.User.get()' to take 'username' parameter
- Move get_editor() and related functions from command-line module to gitea_api.common
- Migrate subcommands from using Store() to get_store() that is git aware
- Make imports lazy to imporove osc load times
Version: 1.17.0-bp160.1.2
* Tue Jun 24 2025 Daniel Mach <daniel.mach@suse.com>
- 1.17.0
- Command-line:
- Rename 'git-obs pr review' to 'git-obs pr review interactive'
- Add 'A)approve and schedule for merging' action to 'git obs pr review interactive'
- Add 'git-obs pr merge' command
- Add 'git-obs pr review accept' and 'git-obs pr review decline' commands
- Implement 'git-obs repo list' command
- Add '--export' option to 'git-obs pr list' and 'git-obs pr search'
- Fix crash during token validation in 'git-obs login {add,update}' when value is not specified
- Fix loading shell completions for 'git-obs'
- Fix 'git-obs api' by preventing of quoting the URL query part
- Add a possibility to override git-obs login entries from env
- Validate arguments in 'osc fork' command
- Revert "Improve 'updatepacmetafromspec' command to expand rpm spec macros by calling rpmspec to query the data"
- Improve 'updatepacmetafromspec' command to expand rpm spec macros by calling queryrecipe to query the data (bsc#1243722)
- Connection:
- Do not use pipe for ssh-keygen input
- Library:
- Refactor gitea_api to use objects with properties instead of raw JSON data
- Add GiteaModel base class and json_dumps() function that can serialize such objects
- Rename 'anonymous' argument in 'gitea_api.Repo.clone()' to 'use_http'
- Allow git in git-obs to be switched from SSH to http(s)
- Move yaml handling code to osc.util.yaml, add fallback to PyYaml
- Fix how types are compared in OscOptions.set_value_from_string()
- get_package_results: check for waiting states in all multibuild packages
- Extend _buildinfo file lookup to the current directory
- Fix git store when .git is a file with "gitdir: <path>" link
- Migrate store_* functions to use get_store instead of the original code
- Spec:
- Modify spec to use PyYAML on SLE15
* Tue May 20 2025 Daniel Mach <daniel.mach@suse.com>
- 1.16.0
- Command-line:
- Add 'osc rmkpac' subcommand
- Add 'osc service precommit' subcommand, for use with git hook
- Add '--target-branch' filter option to 'git-obs pr list'
- Add '--reviewer' and '--review-state' options to 'git-obs pr list'
- Add '--no-draft' filter option to 'git-obs pr list'
- Set limit=0 to disable pagination in all relevant git-obs subcommands
- Improve help of the 'git-obs login' subcommands
- Update 'git-obs login {add,update}' to check the gitea token format
- Fix 'osc fork' when <attributes/> in the source project is empty
- Fix handling env in tests for 'osc vc'
- Fix how GitStore reads project from the parent directory
- Fix 'git-obs pr create' with multistring EDITOR
- Improve handling exceptions in 'git-obs' command
- Improve message in 301: Moved Permanently error in git-obs
- Improve git-obs to read credentials from env variables
- Remove commas from the list of request IDs in the superseding prompt in 'osc sr'
- Connection:
- Fix git-obs connection for urllib3 v1 by overriding the default timeout
- Library:
- Add troubleshooting info to gitea_api.Login.DoesNotExist message
- Add 'min_key_length' argument to KeyValueTable to enforce the minimal length of the first column
- Fix implicit optionals in type hints to make code PEP 484 compliant
- Don't crash when OBS API returns None as request description
- Fix TypeError in response_to_exception() in gitea_api
* Fri Apr 04 2025 Daniel Mach <daniel.mach@suse.com>
- 1.15.1
- Library:
- Revert "Run decode_it also in the other case"
* Fri Apr 04 2025 Daniel Mach <daniel.mach@suse.com>
- 1.15.0
- Command-line:
- Improve 'osc fork' to follow the devel package specified in the 'OBS:RejectBranch' attribute
- Hotfix 'osc fork' failures of devel project users
- Change 'osc fork' to print an error rather than raising an exception
- Fix setting parent remote in 'git-obs repo clone'
- Extend 'osc build' to read build project from Gitea: <owner>/_ObsPrj, project.build file
- Fix 'osc build' when working with sources from git, when .osc is not available
- Fix crash in 'osc build --host'
- Fix rendering help output by adding the complete docstring of the commands
- Add commented git status to the 'git-obs pr create' message
- When doing an mr from a working copy check for unchecked modifications
- Consolidate working copy modification check dialog into a function
- Connection:
- Change a debug message to a warning if ssh-keygen is not available
- Add explanatory message to ignore the signature auth warning when not using SSH keys for auth
- Library:
- Implement handling of updateinfo.xml and _modulemd.yaml files
- Fix working with _subdirs when detecting packages that are subdirectories in a git project
- Fix canonname handling when querying a downloaded package
- Add obs_api.Attributes model
- Add 'quiet' and 'branch' options to gitea_api.Repo.clone()
- Fix GitStore by parsing git urls with obs_api.Git.urlparse()
- Add gitea_api.Git.urlparse() for parsing git urls
- Change gitea_api.Config.url_to_hostname() to also try matching only a hostname instead of full Gitea URL
- Rename get_parser() functions to argparse_manpage_get_parser() to clarify their purpose
- Refactor the validity check of cached binaries
- Other:
- Update git-obs-quickstart doc with more detailed info on creating tokens
- Spec:
- Recommend obs-scm-bridge
- Build git-obs man page
* Fri Mar 28 2025 Adrian Schröter <adrian@suse.de>
- Add temporary hotfix for osc fork
* Thu Mar 20 2025 Daniel Mach <daniel.mach@suse.com>
- 1.14.0
- Command-line:
- Improve 'osc fork' command to support also forking projects managed in git
- Extend 'osc fork' command with '--target-project' and '--target-package' options
- Enable shell completion of various 'git-obs' arguments and options
- Fix 'git-obs pr create --target-branch'
- Fix 'osc fork' crash in print_gitea_settings()
- Use -A/--apiurl specified on the command-line even if running from a checkout
- Assume openSUSE:Factory if project cannot be determined in 'osc build' command
- Change 'osc whatdependson' command to take multiple '-M' options incl. wildcards
- Fix diff highlighting
- Library:
- Set pacsuffix='deb' if binarytype=='deb'
- Add scmsync element to meta template
- Add missing project_separator substitutions
- Fix call os.userexpand() on gitea_api.Config() path argument
- Fix adding arguments to the argument parser so they work with argcomplete
- Fix MultibuildFlavorResolver to consider an empty flavor during glob match
- Fix MultibuildFlavorResolver to work with <package> _multibuild elements
- Remove superfluous setting of apiurl from 'osc fork'
- Mute mypy errors on field property assignment
- Add type hint to XmlModel.XML_TAG
- Support new 'X | None' union syntax in field types
- Other:
- Fix 'git-obs login add' command invocation in git-obs-quickstart documentation
- Spec:
- Recommends: python3-argcomplete for git-obs
* Wed Mar 12 2025 Marcus Rueckert <mrueckert@suse.de>
- fix the generic provides for %{use_python_pkg}-osc to be
versioned so that one can actually have versioned requires
against that symbol
- restore python3-osc provides if we are building against the
primary_python version
* Mon Mar 10 2025 Marcus Rueckert <mrueckert@suse.de>
- if we have primary_python defined lets use this to get runtime
requires matching the shebang lines
* Mon Mar 03 2025 Daniel Mach <daniel.mach@suse.com>
- 1.13.0
- Command-line:
- Add 'osc fork' command for forking a package with sources managed in Gitea
- Add 'git-obs pr review' command
- Allow 'git-obs login' subcommands to prompt for Gitea tokens
- Fix 'osc checkout' command to support deleted packages incl. revisions
- Update 'osc rpmlint' command by adding help message for invoking command in PKG dir
- Add '--multibuild-package' option to 'osc rpmlint' command
- Library:
- Change how git projects and packages are detected
- Change show_project_sourceinfo() to split a huge request into many and join the results to workaround GET limitations
- Make 'rev' option in ScmsyncObsinfo.from_api() optional
- Make GitObsCommand.gitea_{conf,login,conf} properties writable
- Fix local building of deb dockerfile
- Fix getting scm_url from scmsync_obsinfo that has subdir set
- Fix or silence pylint errors
- Support 'enabled' field in tokens
- Highlight trailing whitespaces in diffs
- Fix missing spaces in help string
- Other:
- Add git-obs Quickstart documentation and man page
* Thu Feb 13 2025 Daniel Mach <daniel.mach@suse.com>
- 1.12.1
- Command-line:
- Improve 'maintenancerequest' command to inherit description from superseded request
- Library:
- Tell the build script to disable repos/containers handling for normal builds
- Improve detecting git packages, use .osc metadata from project in parent directory
- Fix retrieving apiurl from git repositories in get_api_url() in the command-line code
- Fix typo in core.binary() that caused text files being detected as binary
- Improve core.binary() by always considering data that contains \0 binary
- Fix assembling scm_url when scmsync_obsinfo.revision is None