gbp-rpm-ch(1)
π gbp-rpm-ch π
okay bestie, so this is the manpage for gbp-rpm-ch, which lives in the git-buildpackage Manual family, and it's literally the tool that turns your git commit messages into a shiny RPM changelog β¨. It's giving "let the git history write the changelog for you" and honestly? iconic.
π NAME π
gbp-rpm-ch; β Generate the RPM changelog from git commit messages π¦
πΈ SYNOPSIS πΈ
gbp rpm-ch [--version] [--help] [--verbose] [--color=[auto|on|off]]
[--color-scheme= COLOR_SCHEME] [--tmp-dir= DIRECTORY]
[--vendor= VENDOR] [--packaging-branch= BRANCH-NAME]
[--packaging-tag= TAG-FORMAT] [--ignore-branch]
[--packaging-dir= DIRECTORY] [--changelog-file= FILEPATH]
[--spec-file= FILEPATH] [--since= COMMIT-ISH] [--no-release]
[--[no-]git-author] [--[no-]full] [--id-length= NUMBER]
[--ignore-regex= REGEX] [--changelog-revision= REV-FORMAT]
[--git-log= GIT-LOG-OPTIONS]
[--spawn-editor=[always|release|no]] [--editor-cmd= EDITOR]
[--customizations= CUSTOMIZATION-FILE] [PATH1 PATH2]
π«Ά DESCRIPTION π«Ά
So gbp rpm-ch reads git commit messages all the way up to the current tip of the current branch, and then it updates the RPM changelog from them. That's it, that's the whole vibe. No cap π§
By default, gbp rpm-ch tries to guess the last Git commit that got documented in the changelog. Which is cute of it. But if you wanna be the main character and decide yourself, you've got options:
--sincetellsgbp rpm-chexactly where it should start in the Git history π--allmakes it use all commits from the Git history (yes, all of them, no survivors π)
You can also pass extra path arguments to restrict which repository paths gbp rpm-ch even looks at. And if you want even more detailed control? Use --git-log to restrict the generated changelog entries further. Like, for example, --git-log="--author=Foo Bar" β that's the move π₯
β¨ OPTIONS β¨
--versionβ Print the version of the program, i.e. the version of the git-buildpackage suite. Say hi to your build tooling π-v,--verboseβ Verbose execution. She tells you everything she's doing, lowkey oversharing, we love that.-h,--helpβ Print help and exit. When in doubt, ask for help bestie π₯Ί--color=[auto|on|off]β Whether to use colored output. Pick your aesthetic π--color-scheme=COLOR_SCHEMEβ The colors to use in output (when color is enabled, obvi). The format for COLOR_SCHEME is'<debug>:<info>:<warning>:<error>'. Numerical values and color names are both accepted, and empty fields imply the default color. For example,--git-color-scheme='cyan:34::'would show debug messages in cyan, info messages in blue, and other messages in the default color (i.e. warning and error messages in red). So aesthetic, so organized β¨--git-tmp-dir=DIRECTORYβ Base directory under which temporary directories are created. A home for the lil temp gworls π--vendor=VENDORβ Distribution vendor name.--packaging-branch=BRANCH-NAMEβ The branch in the Git repository the package is being developed on. Default ismaster. (the classic π΅)--ignore-branchβ Don't check if the current branch matches PACKAGING-BRANCH. Live your truth, no questions asked π--packaging-tag=TAG-FORMATβ Tag format used when tagging releases. Default is%(vendor)s/%(version)s.--packaging-dir=DIRECTORYβ Subdirectory that contains the RPM packaging files.--changelog-file=FILEPATHβ Relative path to the changelog file to use. The special valueautocauses gbp to guess,SPECuses the spec file, andCHANGESuses a separate changelog file (the name is derived from the spec file name with the.specsuffix replaced by.changes). The guessing logic is simple, babes: use the separate changelog file if it is found, otherwise use the spec file. That's it π--spec-file=FILEPATHβ Relative path to the spec file to use. The special valueautocauses gbp to search and guess. Other values cause the--packaging-diroption to be ignored β the directory of the spec file is used instead. Note the tradeoff bestie π--since=COMMIT-ISHβ Start reading commit messages at COMMIT-ISH.--no-releaseβ Do not create a new changelog section, just update the last changelog section. Sometimes you just wanna touch up the last one, and that's valid π«Ά--[no-]fullβ Include the full commit message in the changelog output.--git-log=GIT-LOG-OPTIONSβ Options passed on verbatim togit-log(1). Verbatim. She doesn't touch them, she just forwards them, like a good friend π--id-length=Nβ Include N digits of the commit id in the changelog entry. Default is to not include any commit ids at all. Minimalist queen.--ignore-regex=REGEXβ Ignore lines in commit message matching REGEX when generating the changelog.--changelog-revision=REV-FORMATβ Format string to use for the revision field in the changelog header. The following string fields are accepted:%(upstreamversion)sβ the upstream version%(release)sβ the rpm patchlevel, i.e.Release%(version)sβ full rpm package version%(tagname)sβ tag/commit, i.e. basically whatgit-describewould give
If empty or not defined, the default from packaging policy is used. Let the policy decide, she knows what's best β¨
--ignore-regex=REGEXβ Ignore commit lines matching REGEX when generating the changelog. (yes, she's listed twice, both are real, both get listed, we don't erase the twins π«Ά)--[no-]git-authorβ Useuser.nameanduser.emailfromgit-config(1)for the changelog header.--spawn-editor=[always|release|no]β Whether to spawn an editor:always, when doing arelease, ornoβ never. Pick your adventure πΈ--editor-cmd=EDITORβ The editor to use for editing the changelog. Who's your chosen one? π--customizations=CUSTOMIZATION-FILEβ Load Python code from CUSTOMIZATION-FILE. At the moment, the only useful thing the code can do is define a customChangelogEntryFormatterclass. Very niche, very powerful, very her π
π META TAGS π
Additional to all the above options, the formatting of the new changelog entries (one-per-commit) in the changelog can be modified by special tags called Meta Tags, which you put right in the git commit message. Spicy but legal πΆοΈ
The tags must start at the first column of a commit message, but they can appear on any line. They are of the form Tagname: VALUE. Valid Meta Tags are:
Git-Rpm-Ch: ACTIONβ Supported actions are:Ignore, which will ignore this commit when generating new changelog entries πShort, which will only use the description (the first line) of the commit message when generating the changelog entry (useful when--fullis given)Full, which will use the full commit message when generating the changelog entry (useful when--fullis not given)
[Close|Closes|...]: BUGNUMBERβ Indicate in the changelog entry that bug BUGNUMBER was addressed in this commit. Close that bug bestie, you ate πβ¨
So like, the following git commit message:
Document meta tags
so one doesn't have to consult the manual
Git-Rpm-Ch: Short
Closes: #636088
Results in this changelog entry:
- Document meta tags (Closes: #636088)
See?? The way that it just works ππ
π CONFIGURATION FILES π
Several gbp.conf files are parsed to set defaults for the above command-line arguments. See the gbp.conf(5) manpage for all the deets, because that's a whole other story π
π¦ SEE ALSO π¦
gbp-buildpackage-rpm(1), gbp-import-srpm(1), gbp.conf(5), debuild(1), git(1), pristine-tar(1), The Git-Buildpackage Manual β¨file:///usr/share/doc/git-buildpackage/manual-html/index.htmlβ© Cl2vcs β¨https://honk.sigxcpu.org/cl2vcsβ© ,
Go read them, they're all in the friend group π«Ά
π AUTHOR π
Markus Lehtonen <markus.lehtonen@linux.intel.com> β ty for your service king π
okay so that's literally it bestie β¨ this whole page was written up on 26 May 2026, it's part of the git-buildpackage Manual, and it's page gbp-rpm-ch(1) of that vibe. now go generate some changelogs, you're gonna slay π
ππ
π¦ where this page comes from
- ubuntu stonking: git-buildpackage-rpm 0.9.43 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms