GENERATE_...CHANGELOG(1)

πŸ“¦ version 2.1.1, in opensuse-leap 16.0

πŸ’… GENERATE_...CHANGELOG(1) β€” keg's very own change log generator, bestie

okay so this is a page from Keg - Image Composition Tool, section 1 of the manual, and it's all about generate_recipes_changelog. she's a lil script with main character energy and she's about to make your git history cute and readable, no cap πŸŽ€


✨ NAME ✨

generate_recipes_changelog β€” the change log generator for keg images 🧚


🌸 SYNOPSIS 🌸

generate_recipes_changelog [options] <logfile>

like. that's it. options, then the logfile. slay πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

so generate_recipes_changelog literally generates a change log out of the git commit history of one or more keg-recipes repositories. obsessed with her honestly.

the input file? it's a source info log, and it gets generated by keg when you run it with source tracking enabled β€” that's the -s command line switch, iykyk πŸ”₯

now the exit statuses, because these matter fr fr:

  • 0 β€” a change log was generated successfully, we love a win πŸŽ‰
  • 1 β€” an error occurred 😭
  • 2 β€” no error occurred, but the generated change log is empty πŸ’€ (yes, empty is its own whole situation)

πŸ“ ARGUMENTS πŸ“

  • logfile β€” a source info log file produced by keg. that's the vibe. hand her the log, she does the rest 🫢

πŸ‘‘ OPTIONS πŸ‘‘

  • -o OUTPUT_FILE β€” write the output to OUTPUT_FILE. if you omit it, it just goes to stdout, easy ✨
  • -r PATH:REV β€” set the git revision range to REV for the repo living at PATH.
NOTE: this limits the applicable set of commits to the given revision spec. lowkey the whole point is that you can use this to select only the newer changes since a previous run of the change log generator. see EXAMPLE below, bestie πŸ‘‡
  • -f FORMAT β€” output format, either 'text' or 'yaml' [default: yaml] πŸŽ€
  • -m MSG_FORMAT β€” format spec for commit messages (check 'format:<string>' in man git-log) [default: - %s]. heads up: this one is only used with the text format πŸ’œ
  • -t ROOT_TAG β€” use ROOT_TAG for yaml output (e.g. the image version). so like. the name at the top of everything ⭐

🌈 EXAMPLE 🌈

generate_recipes_changelog -r /path/to/repo:12345678.. -t 1.1.8 log_sources

so what's happening here: this produces a YAML change log, namespaced with 1.1.8 (which is intended as a version number), and it only considers commits after hash 12345678 πŸ”₯

and here's the incremental magic: if 12345678 was the hash of the HEAD commit in the checked-out branch at /path/to/repo during the previous run of generate_recipes_changelog on the same data set, then this limits the change log to only contain newer changes. literally the way you produce incremental change logs. periodt πŸ’…

the change log is gonna have this format:

1.1.8:
  - change: git message subject
    date: git commit UTC timestamp
    details: |-
      git message body
  ...

look at her go πŸ˜­πŸ’–


πŸ’Œ AUTHOR πŸ’Œ

public-cloud-dev@susecloud.net β€” yeah, that's the address on the page 🫢


2022, SUSE - Public Cloud Team


okay and the cute lil sign-off at the bottom of the original page says version 2.1.1, dated Jan 31, 2025, and it's the GENERATE_...CHANGELOG(1) page again because manpages love a symmetric moment ✨ bye bestie, go generate some change logs πŸ’–

πŸ“¦ where this page comes from