GUILT(7)
π GUILT(7) β the Guilt Manual π
okay bestie, sit down, hydrate, because this is the manual page for guilt, and it is literally quilt on top of git. that's the whole vibe. β¨
β¨ SYNOPSIS β¨
guilt COMMAND [ARGS]
like. that's it. that's the whole thing. <rainbow>COMMAND</rainbow> and then whatever <rainbow>ARGS</rainbow> that command wants. π
πΈ DESCRIPTION πΈ
so storytime π«Ά β Andrew Morton originally wrote a bunch of scripts for keeping kernel patches alive outside of any SCM tool. then other people came along and extended them into a whole suite called quilt. the big idea behind quilt is that you maintain patches instead of maintaining source files directly. you can add patches, remove patches, reorder them, and refresh them whenever you fix a bug or bump up to a new base revision. quilt is genuinely powerful, no cap. but π it is not integrated with the underlying SCM tools, and that makes it hard to actually see your changes. it's giving vibes without a mirror.
Guilt fixes that by letting you use quilt functionality right on top of a Git repository. changes are maintained as patches, and those patches get committed into Git. you can remove commits or reorder them, and the underlying patch can be refreshed based on whatever you changed in the working directory. bonus: the patch directory itself can go under revision control, so you get a whole separate history of changes made to your patches. iconic. π
π PATCHES DIRECTORY π
in Guilt, all the patches live in:
.git/patches/$branch/
where $branch is the name of the branch you're working on. which means β¨ you can have a completely independent series of patches for every branch in the repo. main character energy per branch, fr fr.
each of these per-branch directories contains 3 special files:
guardsβ this file contains any guards that should be applied to the series when pushing. it is only present when guards are selected. (so if you don't see it, that's why, don't panic π«Ά)seriesβ this file contains a list of all the patch filenames relative to the per-branch patch directory. empty lines and commented out lines are ignored. πstatusβ this file contains the state of the stack. what patches are applied. that's it, that's the tea. π
π¦ HOOKS π¦
any guilt operation may execute zero or more hook scripts. these can run any housekeeping commands you wantβ¦ or even abort the execution of the command. yes bestie, your hook has veto power. π
π HOOKS DIRECTORY π
Guilt follows the same basic design as hooks in Git itself. all Guilt hooks are executable files β generally shell scripts, but honestly they can be anything the operating system can execute β living in:
.git/hooks/guilt/
the following hooks are supported:
delete <patch name>β executed when a patch is deleted from the patch series viaguilt-delete(1).
π GUILT COMMANDS π
all commands must be called without a dash. e.g. guilt add
not me typing guilt-add and wondering why nothing happens π no dash. no. dash.
guilt-add(1)β guilt-add - Add a file to git and guilt.guilt-applied(1)β guilt-applied - List applied patches.guilt-branch(1)β guilt-branch - Branch the entire patch series.guilt-commit(1)β guilt-commit - Commit specified number of patches.guilt-delete(1)β guilt-delete - Delete a patch.guilt-diff(1)β guilt-diff - Outputs various diffs.guilt-export(1)β guilt-export - Export a patch series (to be used by quilt).guilt-files(1)β guilt-files - Print the list of files that the topmost patch changes.guilt-fold(1)β guilt-fold - Fold a specified patch into the topmost applied patch.guilt-fork(1)β guilt-fork - Fork the topmost applied patch.guilt-graph(1)β guilt-graph - Create a patch dependency graph.guilt-guard(1)β guilt-guard - Assign guards to patches.guilt-header(1)β guilt-header - Print a patch header.guilt-help(1)β guilt-help - open man page of a guilt command.guilt-import-commit(1)β guilt-import-commit - Import one or more commits as patches.guilt-import(1)β guilt-import - Import specified patch file.guilt-init(1)β guilt-init - Initialize guilt for use in a git repository.guilt-new(1)β guilt-new - Create a new patch.guilt-next(1)β guilt-next - Output the name of next patch to be pushed.guilt-patchbomb(1)β guilt-patchbomb - Email a series of commits interactively.guilt-pop(1)β guilt-pop - Pop patches from the tree.guilt-prev(1)β guilt-prev - Output name of second topmost applied patch.guilt-push(1)β guilt-push - Push patches onto the tree.guilt-rebase(1)β guilt-rebase - Rebase pushed patches.guilt-refresh(1)β guilt-refresh - Refresh topmost applied patch.guilt-repair(1)β guilt-repair - Repair the repository state.guilt-rm(1)β guilt-rm - Remove a file from the git tree and guilt.guilt-select(1)β guilt-select - Select guards to apply when pushing patches.guilt-series(1)β guilt-series - Print the stack of patches.guilt-status(1)β guilt-status - Print the status of files since the last refresh.guilt-top(1)β guilt-top - Output name of topmost applied patch.guilt-unapplied(1)β guilt-unapplied - List all unapplied patches.
π AUTHOR π
Written by Josef "Jeff" Sipek jeffpc@josefsipek.net[1] π
π DOCUMENTATION π
Documentation by Brandon Philips brandon@ifup.org[2] and Josef "Jeff" Sipek jeffpc@josefsipek.net[1] π«Ά
β GUILT β
Part of the guilt(7) suite (Generated for Guilt v0.36). yes she's part of a suite, she's that girl. β¨
πΈ NOTES πΈ
jeffpc@josefsipek.netβmailto:jeffpc@josefsipek.netbrandon@ifup.orgβmailto:brandon@ifup.org
and that's a wrap bestie π¦ this was Guilt v0.36, dated 01/12/2023 β go push some patches, you've got this π πβ¨
π¦ where this page comes from
- debian bookworm: guilt 0.36-3 Β· GPL-2.0-only
- debian trixie: guilt 0.36-3 Β· GPL-2.0-only
- ubuntu noble: guilt 0.36-3 Β· GPL-2.0-only
- ubuntu questing: guilt 0.36-3
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms