TITO(8)
π TITO(8) β the tito girlies' guide π
okay so bestie, welcome to the tito manual page (section 8, system administration, we're fancy like that β¨). this is the Tito User Manual and it's about to become your whole personality. grab a boba, we're doing this π§
β¨ NAME β¨
tito β manage RPM based projects using git π
πΈ SYNOPSIS πΈ
tito init
tito tag [OPTIONS]
tito build --test --rpm
tito build [OPTIONS]
tito release [OPTIONS] TARGET
tito report
π¦ DESCRIPTION π¦
so first you set up a directory as a Git repo, and then you use tito to manage the tags and builds. no cap, that's the whole vibe. a simple workflow lowkey looks like this:
- Save user preferences as described in
titorc(5) - Initialize a
.titodirectory - Test
- Make changes to source
- Use git to commit changes
- Build:
tito build --rpm --test
- Finalize a release
- Tag:
tito tag - Push:
git push && git push $ORIGIN $TAG - Build:
tito build [OPTIONS]
- Tag:
π OPTIONS π
π tito init π
this creates a top-level metadata directory called .tito/ and commits it to git. this directory stores tito's configuration and package metadata on a per branch basis. it gets filtered out when you're creating .tar.gz's, so it won't sneak into your tarballs like an uninvited ex π
Note π your spec file should list the source as %{name}-%{version}.tar.gz
π§ tito tag [options] π§
by default, tito will tag by bumping the rpm version (i.e. we bump the Z in X.Y.Z, iconic behavior honestly). if you'd prefer to bump the package release instead (which normally should just be used for changes to the spec file or patches applied within it), you can change the tagger class in .tito/tito.props to ReleaseTagger. this will affect all packages in this git branch β the way that it's a whole-branch decision, not a per-package one π. but if you'd prefer to do this on a per-package basis you can do so in a package specific tito.props.
if you work in a OBS style git with a separate .changes file for the changelog, change the tagger class to tito.susetagger.SUSETagger. the SUSETagger is based on the VersionTagger. slay π«Ά
-h,--helpβ show this help message and exit--debugβ print debug messages (can be also set usingDEBUGenvironment variable)--offlineβ do not attempt any remote communication (avoid using this please π)-o OUTPUTDIR,--output=OUTPUTDIRβ Write temp files, tarballs, and RPMs toOUTPUTDIR. Create sub-directories as needed byrpmbuild(8). (default/tmp/tito)--tag-releaseβ Deprecated, no longer required. π she's retired, respect her legacy--keep-versionβ Use spec file version/release exactly as specified in spec file to tag package.--use-version=USE_VERSIONβ Update the spec file with the specified version.--use-release=USE_RELEASEβ Update the spec file with the specified release.--no-auto-changelogβ Don't automatically create a changelog entry for this tag if none is found--accept-auto-changelogβ Automatically accept the generated changelog.--auto-changelog-message=MESSAGEβ UseMESSAGEas the default changelog message for new packages--changelog=MESSAGEβ UseMESSAGEas the changelog when tagging, this can be specified every time a package is tagged. Useful when needing to generate custom changelogs. This will override the auto generated changelog.-u,--undoβ Undo the most recent (un-pushed) tag. take-backsies are valid β¨
Note π Tito will create automatic changelog from git commits. Unless you specify one of auto options, tito will open text editor and allow you to edit the text. Editor is by default. This can be changes by environment variable EDITOR.
π tito build [options] π
-h,--helpβ show this help message and exit--debugβ print debug messages (can be also set usingDEBUGenvironment variable)--offlineβ do not attempt any remote communication. Avoid using this please. See OFFLINE section below.-o OUTPUTDIR,--output=OUTPUTDIRβ Write temp files, tarballs and RPMs toOUTPUTDIR. (default/tmp/tito)--tgzβ Build.tar.gz--srpmβ Build srpm--rpmβ Build srpm and rpm-i,--installβ Install any binary RPMs being built.
Warning π¨ uses sudo rpm -Uvh --force
--no-sudoβ Don't escalate privileges when installing. Use when running this command with required privileges.--dist=DISTTAGβ ApplyDISTTAGto srpm and/or rpm. (e.g.,".el5")--testβ use current branch HEAD instead of latest package tag.--no-cleanupβ do not clean up temporary build directories/files--rpmbuild-options=OPTIONSβ PassOPTIONSto rpmbuild.--builder=BUILDERβ Override the normal builder by specifying a full class path or one of the pre-configured shortcuts. Only useful if you need to override the default builder for some purpose, such as testing a build via mock.--arg=BUILDER_ARGSβ Custom arguments specific to a particular builder. (key=value)--scl=COLLECTIONβ Build package for software collection. This is mostly useful for building src.rpm, because for rpm you want to define this option for specific tag intito.props--quietβ Suppress output from the build process.--verboseβ Expose more output from the build process.
π tito release [options] TARGETS π
runs the release targets defined in .tito/releasers.conf. let's goooo π₯
-h,--helpβ show this help message and exit--debugβ print debug messages (can be also set usingDEBUGenvironment variable)--offlineβ do not attempt any remote communication. Avoid using this please. See OFFLINE section below.-o OUTPUTDIR,--output=OUTPUTDIRβ Write temp files, tarballs and RPMs toOUTPUTDIR. (default/tmp/tito)--tag=PKGTAGβ build a specific tag instead of the latest version (e.g.,spacewalk-java-0.4.0-1)--dry-runβ Do not actually commit/push anything during release. pretend mode, we love her π--no-buildβ Do not perform a brew/koji build, only DistGit commit. (only for Koji/DistGit releasers)--allβ Run all release targets defined in.tito/releasers.conf.--listβ List all release targets defined in.tito/releasers.conf.--all-starting-with=ALL_STARTING_WITHβ Run all release targets starting with the given string. (i.e. if you have defined release targetsyum-f15andyum-f14inreleasers.conf,--all-starting-with=yumwill run only these targets, and ignore any others.)--scratchβ Perform a scratch build in Koji. Can be specified using environment variableSCRATCHset to1as well.--yesβ Do not ask to confirm release commits or edit their messages.
β tito report [options] β
displays a report of all packages with differences between HEAD and their most recent tag, as well as a patch for that diff. used to determine which packages are in need of a rebuild. it's giving detective energy π
-h,--helpβ show this help message and exit--debugβ print debug messages (can be also set usingDEBUGenvironment variable)--offlineβ do not attempt any remote communication. Avoid using this please. See OFFLINE section below.-o OUTPUTDIR,--output=OUTPUTDIRβ Write temp files, tarballs and RPMs toOUTPUTDIR. (default/tmp/tito)--untagged-diffsβ Print out diffs for all packages with changes between their most recent tag and HEAD. Useful for determining which packages are in need of a re-tag.--untagged-commitsβ Print out the list for all packages with changes between their most recent tag and HEAD. Useful for determining which packages are in need of a re-tag.
π OFFLINE π
Offline lets you potentially do builds you can't reproduce β normally we check that the tag you're building exists in the remote repo. If it hasn't been pushed, it's quite easy to do a build that will result in a checksum that is no longer the same. This is something you should try to avoid.
fr fr, don't do the offline thing unless you have to. unreproducible builds are not the vibe π
π EXAMPLES π
Build and install a test package from the latest code in current git HEAD
tito build --rpm --test -i
Overriding the default builder to build via mock instead
tito build --builder mock --arg mock=fedora-15-x86_64 --rpm
π₯ SEE ALSO π₯
titorc(5) releasers.conf(5) tito.props(5)
/usr/share/doc/tito-*/README.mkd
π AUTHORS π
these absolute legends π
- Devan Goodwin
<dgoodwin@rm-rf.ca> - James Bowes
<jbowes@repl.ca> - Jan Pazdziora
- Jesus M Rodriguez
<jesusr@redhat.com> - Pall Sigurdsson
<palli@opensource.is> - Miroslav SuchΓ½
<msuchy@redhat.com>
and: Adam Miller, Alex Wood, Aron Parsons, Brenton Leanhardt, Ivan NeΔas, John Eckersberg, Kenny MacDermid, LukΓ‘Ε‘ Zapletal, Luke Meyer, Marian Csontos, Martin BaΔovskΓ½, Michael Stead, Mike McCune, mscherer, Paul Morgan, Sean P. Kane, Steve Ashcrow Milner
and that's the whole page bestie, we ate and left no crumbs π β¨
<cute>this was tito, from the Tito User Manual, dated 08/26/2026, living in section TITO(8) β ok bye ily, go tag something ππ¦</cute>
π¦ where this page comes from
- epel 9: tito 0.6.28-1.el9 Β· GPL-2.0-only
- fedora 43: tito 0.6.28-1.fc43 Β· GPL-2.0-only
- fedora 44: tito 0.6.28-1.fc44 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms