hs-relmon(1)

πŸ“¦
version 0.27.0 Β· 5 versions
, in fedora 43, fedora 44

🌸 NAME 🌸

okay so hi bestie πŸ’– welcome to hs-relmon(1), coming at you live from the Sandogasa Manual. Here's the whole vibe:

hs-relmon β€” Release monitoring tool for CentOS Hyperscale SIG packages


✨ SYNOPSIS ✨

hs-relmon [-h|--help] [-V|--version] <subcommands>

πŸ¦‹ DESCRIPTION πŸ¦‹

Release monitoring tool for CentOS Hyperscale SIG packages

that's it, that's the whole description, and honestly? iconic. it's giving "does exactly what it says on the tin" πŸ’…


πŸ’… OPTIONS πŸ’…

  • -h, --help β€” Print help
  • -V, --version β€” Print version

πŸ‘‘ COMMANDS πŸ‘‘

πŸŽ€ hs-relmon check-latest

hs-relmon check-latest [-d|--distros] [--repology-name] [--track]
[--json] [--file-issue] [-h|--help] <PACKAGE>

Check the latest version of a package across distributions β€” so you can find out who's ahead and who's lowkey lagging 🫢

  • -d, --distros <DISTROS> β€” Comma-separated list of distros to check.

Valid names:

  • upstream β€” Newest version across all repos
  • fedora β€” Fedora Rawhide + latest stable
  • fedora-rawhide β€” Fedora Rawhide only
  • fedora-stable β€” Latest stable Fedora only
  • centos β€” Latest CentOS Stream
  • centos-stream β€” Latest CentOS Stream
  • hyperscale / hs β€” Hyperscale EL9 + EL10
  • hs9 β€” Hyperscale EL9 only
  • hs10 β€” Hyperscale EL10 only
  • --repology-name <PROJECT> β€” Override the Repology project name for when it differs from the package (e.g. linux for perf).
  • --track <TRACK> [default: upstream] β€” Distribution to compare Hyperscale builds against.

Valid names:

  • upstream β€” Newest version across all repos (default)
  • fedora-rawhide β€” Fedora Rawhide
  • fedora-stable β€” Latest stable Fedora
  • centos β€” Latest CentOS Stream
  • centos-stream β€” Latest CentOS Stream
  • --json β€” Output as JSON instead of a table
  • --file-issue [<URL>] β€” File or update a GitLab issue if the package is outdated. Searches for an open issue labeled rfe::new-version and updates its title, or creates a new one. Defaults to https://gitlab.com/CentOS/Hyperscale/rpms/PKG. Uses the token from hs-relmon config, or GITLAB_TOKEN env var as an override.
  • -h, --help β€” Print help (see a summary with '-h')
  • <PACKAGE> β€” Source package name (e.g. ethtool)

🧚 hs-relmon check-manifest

hs-relmon check-manifest [--json] [--issue-status] [--issue-assignee]
[-h|--help] <MANIFEST>

Check all packages listed in a manifest file β€” one manifest, every package, no scrolling through tabs like a menace 🌈

  • --json β€” Output as JSON instead of tables
  • --issue-status <STATUS> β€” Only show packages whose GitLab issue matches this work-item status. Packages without an issue are excluded. Issues that do not match are not updated.

Default statuses:

  • To do β€” Planned but not started
  • In progress β€” Currently being worked on
  • Done β€” Completed
  • Canceled β€” Will not be done
  • --issue-assignee <USERNAME> β€” Only show packages whose GitLab issue is assigned to this username. Use "none" to match unassigned issues. Packages without an issue or without a matching assignee are excluded.
  • -h, --help β€” Print help (see a summary with '-h')
  • <MANIFEST> β€” Path to the TOML manifest file

⭐ hs-relmon check-repos

hs-relmon check-repos [--package] [--gitlab-group] [--apply] [-y|--yes]
[--json] [-v|--verbose] [-h|--help] <MANIFEST>

Check every manifest package's GitLab repo against the SIG's conventions β€” default branch the newest Hyperscale branch, merge requests fast-forwarded β€” and set them with --apply. bestie it's literally a vibe check for your repos πŸ’–

  • --package <LIST> β€” Comma-separated packages to check (default: all)
  • --gitlab-group <URL> [default: https://gitlab.com/CentOS/Hyperscale/rpms] β€” GitLab group the packages' repos live under
  • --apply β€” Set what differs, asking per repo (a for the rest, q to stop)
  • -y, --yes β€” Apply to every repo without asking
  • --json β€” Output as JSON instead of human-readable
  • -v, --verbose β€” Print progress to stderr
  • -h, --help β€” Print help
  • <MANIFEST> β€” Path to the TOML manifest file

πŸ’€ hs-relmon check-stock

hs-relmon check-stock [--repositories] [--skip] [--color] [-v|--verbose]
[-h|--help] <MANIFEST>

Compare every manifest package's Hyperscale builds against stock: still ahead, or caught up β€” and then whether to retire it or rebase it, per the manifest's divergent

  • --repositories <REPOSITORIES> [default: main] β€” Comma-separated Hyperscale repositories whose -release/-testing tags are compared against stock. The repository is the segment between -packages- and the stage suffix, e.g. main in hyperscale10s-packages-main-release.
  • --skip <LIST> β€” Comma-separated packages to skip
  • --color[=<WHEN>] [default: auto] β€” Colorize the verdicts, as ls --color: --color alone is always; auto (the default) colors a TTY unless NO_COLOR is set; never

Possible values:

  • auto: Auto-detect: enable on a TTY when NO_COLOR is unset
  • always: Force colored output even when piped
  • never: Disable colored output entirely
  • -v, --verbose β€” Print progress to stderr
  • -h, --help β€” Print help (see a summary with '-h')
  • <MANIFEST> β€” Path to the TOML manifest file

πŸ”₯ hs-relmon config

hs-relmon config [-h|--help]

Configure GitLab authentication β€” go set up your token so the rest of this can actually do stuff 🫢

  • -h, --help β€” Print help

πŸ“ hs-relmon dupe-subpkgs

hs-relmon dupe-subpkgs [--repositories] [--release] [--package] [--fix]
[--json] [-v|--verbose] [-h|--help]

Find binary RPMs shipped by 2+ source packages in a tag β€” the classic "wait why is this file in two places" moment 😭

  • --repositories <REPOSITORIES> [default: main] β€” Comma-separated Hyperscale repositories to scan. The repository is the segment between -packages- and the stage suffix, e.g. main in hyperscale10s-packages-main-release. Each repository's -release and -testing tags across EL9/EL10 (and the Stream variants) are scanned.
  • --release <RELEASE> β€” Hyperscale release(s) to scan, repeatable or comma- separated. Each value is a short EL token (9, 9s, 10, 10s) or the equivalent full release name (hyperscale9s, hyperscale10s, ...) β€” both forms mean the same release. Defaults to all four.
  • --package <PACKAGE> β€” Source package name(s), repeatable or comma-separated. Only collisions that involve one of these sources are reported (the whole tag is still scanned to find what they collide with). Defaults to all packages.
  • --fix β€” For each collision, show the candidate builds and the binaries only each one provides (which would vanish from the tag if it were untagged), then prompt for which build to untag. Defaults to skipping. Requires CBS write authentication. In --json mode or without a terminal the plan is printed and nothing is untagged.
  • --json β€” Output as JSON instead of a table
  • -v, --verbose β€” Print progress to stderr
  • -h, --help β€” Print help (see a summary with '-h')

πŸ’œ hs-relmon file-conflicts

hs-relmon file-conflicts [--repositories] [--release] [--package]
[--json] [-v|--verbose] [-h|--help]

Find files shipped by 2+ sources across enabled repos β€” same energy as dupe-subpkgs but for files that collide when the repos are all switched on together ✨

  • --repositories <REPOSITORIES> β€” Comma-separated repositories that are enabled together on a host, compared per EL version. Overrides the per-EL defaults (main + kernel on EL10/10s; main only on EL9/9s, which has no kernel repo). The -release tag of each is combined and files owned by two or more distinct source packages are flagged.
  • --release <RELEASE> β€” Hyperscale release(s) to scan, repeatable or comma- separated. Each value is a short EL token (9, 9s, 10, 10s) or the equivalent full release name (hyperscale9s, hyperscale10s, ...) β€” both forms mean the same release. Defaults to all four.
  • --package <PACKAGE> β€” Source package name(s), repeatable or comma-separated. Only conflicts that involve one of these sources are reported (the whole repo set is still scanned to find what they conflict with). Defaults to all packages.
  • --json β€” Output as JSON instead of a table
  • -v, --verbose β€” Print progress to stderr
  • -h, --help β€” Print help (see a summary with '-h')

🌈 hs-relmon list-issues

hs-relmon list-issues [--group] [--issue-status] [--issue-assignee]
[--json] [--manifest] [--add-missing] [-h|--help]

List GitLab issues labeled rfe::new-version β€” the whole to-do list, but make it a table πŸ’…

Default statuses:

  • To do β€” Planned but not started
  • In progress β€” Currently being worked on
  • Done β€” Completed
  • Canceled β€” Will not be done
  • --issue-assignee <USERNAME> β€” Only show issues assigned to this username. Use "none" to match unassigned issues.
  • --json β€” Output as JSON instead of a table
  • --manifest <PATH> β€” Path to a TOML manifest file. When provided, the output shows which packages with rfe::new-version issues are missing from the manifest.
  • --add-missing β€” Add packages that have rfe::new-version issues but are missing from the manifest. Requires --manifest. Packages are inserted in sorted order.
  • -h, --help β€” Print help (see a summary with '-h')

πŸ¦‹ hs-relmon prune-archived

hs-relmon prune-archived [--repositories] [--skip] [--dry-run]
[-y|--yes] [-v|--verbose] [-h|--help] <MANIFEST>

Untag CBS builds for archived-upstream packages stock caught up to β€” if upstream went to sleep and stock already caught up, this is the little cleanup fairy 🧹✨

  • --repositories <REPOSITORIES> [default: main] β€” Comma-separated Hyperscale repositories to manage. The repository is the segment between -packages- and the stage suffix, e.g. main in hyperscale10s-packages-main-release. Tags whose repository is not in this list are not touched.
  • --skip <LIST> β€” Comma-separated packages to skip
  • --dry-run β€” Preview operations without applying them
  • -y, --yes β€” Untag at/behind-stock without prompting; skip ahead-of-stock
  • -v, --verbose β€” Print progress to stderr
  • -h, --help β€” Print help (see a summary with '-h')
  • <MANIFEST> β€” Path to the TOML manifest file

🌸 hs-relmon prune-manifest

hs-relmon prune-manifest [--release-keep] [--testing-keep]
[--repositories] [--skip] [--dry-run] [-y|--yes] [-v|--verbose]
[-h|--help] <MANIFEST>

Untag old hyperscale builds for every package in a manifest, keeping N newest in each -release/-testing tag

  • --release-keep <RELEASE_KEEP> [default: 2] β€” how many builds to keep per -release tag πŸ’–
  • --testing-keep <TESTING_KEEP> [default: 1] β€” how many builds to keep per -testing tag ✨
  • --repositories <REPOSITORIES> [default: main] β€” comma-separated list of Hyperscale repositories to manage. The repository is literally the segment chillin' between -packages- and the stage suffix β€” so like main in hyperscale10s-packages-main-release. Any tag whose repository isn't on this list? Not touched. Not even glanced at, bestie. πŸ’…
  • --skip <LIST> β€” comma-separated package names to skip during the batch run. Obsessed with this one for when a single package runs its own tag cleanup (looking at you, systemd) and you truly do not want this tool anywhere near it πŸ™ˆ
  • --dry-run β€” preview the operations without applying them πŸ‘€
  • -y, --yes β€” skip the per-package confirmation prompt, no more y/n tap dance
  • -v, --verbose β€” print progress to stderr
  • -h, --help β€” print help (and you can peep a summary with just -h)
  • <MANIFEST> β€” path to the TOML manifest file πŸŽ€

🌸 hs-relmon prune-tags 🌸

hs-relmon prune-tags [--release-keep] [--testing-keep] [--repositories]
[--dry-run] [-y|--yes] [-v|--verbose] [-h|--help] <PACKAGE>

Untag those old hyperscale builds for one package, keeping the N newest in every -release/-testing tag. Spring cleaning but make it build tags 🧹✨

  • --release-keep <RELEASE_KEEP> [default: 2] β€” builds to keep per -release tag πŸ’–
  • --testing-keep <TESTING_KEEP> [default: 1] β€” builds to keep per -testing tag ✨
  • --repositories <REPOSITORIES> [default: main] β€” comma-separated Hyperscale repositories to manage. The repository is the segment between -packages- and the stage suffix, e.g. main in hyperscale10s-packages-main-release. Tags whose repository is not in this list are not touched.
  • --dry-run β€” preview operations without applying them
  • -y, --yes β€” skip the confirmation prompt
  • -v, --verbose β€” print progress to stderr
  • -h, --help β€” print help (see a summary with -h)
  • <PACKAGE> β€” the source package name (e.g. ethtool) 🫢

πŸ‘‘ hs-relmon retire πŸ‘‘

hs-relmon retire [--gitlab-group] [--dry-run] [--force] [-y|--yes]
[-v|--verbose] [-h|--help] <--manifest> <PACKAGE>

Retire package(s) that stock now carries: untag their builds from every hyperscale tag, drop them from the manifest, and archive their GitLab repos. It's giving "we're so over you" but, like, administratively πŸ’€

  • --manifest <PATH> β€” path to the TOML manifest file to drop them from
  • --gitlab-group <URL> [default: https://gitlab.com/CentOS/Hyperscale/rpms] β€” the GitLab group the packages' repos live under
  • --dry-run β€” show the plan without untagging, editing or archiving
  • --force β€” retire a package the manifest declares divergent (carrying SIG changes), which is otherwise refused. Normally this is a hard no β€” <italic>--force</italic> is the override 🚨
  • -y, --yes β€” retire without confirming; it never untags a build newer than stock, and then leaves the package in place
  • -v, --verbose β€” print progress to stderr
  • -h, --help β€” print help
  • <PACKAGE> β€” package(s) to retire
Heads up bestie: that divergent refusal is real, and -y will quietly not nuke anything newer than stock β€” the package just stays. Read the room before you smash enter. 😭

πŸ¦‹ hs-relmon review πŸ¦‹

hs-relmon review [--repositories] [--skip] [--changelog-lines]
[--dry-run] [-v|--verbose] [-h|--help] [TARGET]

Interactively review builds sitting in hyperscale -testing tags and promote (+1), reject (-1), or skip (0) each one. Main character energy: you are the vibe check 🌈

  • --repositories <REPOSITORIES> [default: main] β€” comma-separated Hyperscale repositories to scan. The repository is the segment between -packages- and the stage suffix, e.g. main in hyperscale10s-packages-main-testing.
  • --skip <SKIP> β€” package name(s) to exclude from review, repeatable or comma-separated. Use it for packages with their own release pipeline (e.g. systemd) that should never be promoted through this tool. Periodt. πŸ’…
  • --changelog-lines <CHANGELOG_LINES> [default: 20] β€” for a package with nothing yet in release, show at most this many lines of its changelog (a new package has no prior version to diff against). Packages that are already in release always show just the entries newer than the released build. So you're not reading a whole saga when a snack would do πŸ“
  • --dry-run β€” list the builds that would be reviewed, then exit
  • -v, --verbose β€” print progress to stderr
  • -h, --help β€” print help (see a summary with -h)
  • [TARGET] β€” optional package name or build NVR. With a package name, it reviews its latest build in each testing tag; with an NVR, it reviews that specific build; omitted, it reviews everything in testing ✨

And that's the whole page, bestie β€” go untag something and feel something. 🫢

This was hs-relmon(1) from sandogasa version 0.27.0, dated 2026-10-21 β€” love that for us. πŸ’–

πŸ“¦ where this page comes from
  • fedora 43: sandogasa 0.27.0-2.fc43 Β· (Apache-2.0 OR MIT) AND LicenseRef-Fedora-Public-Domain AND Unicode-3.0 AND Apache-2.0 AND ISC AND MIT AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-3-Clause AND MPL-2.0 AND (Unlicense OR MIT) AND Zlib
  • fedora 44: sandogasa 0.27.0-2.fc44 Β· (Apache-2.0 OR MIT) AND LicenseRef-Fedora-Public-Domain AND Unicode-3.0 AND Apache-2.0 AND ISC AND MIT AND (Apache-2.0 OR BSL-1.0) AND (Apache-2.0 OR ISC OR MIT) AND (Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT) AND BSD-3-Clause AND MPL-2.0 AND (Unlicense OR MIT) AND Zlib
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms