tito(8) ======= include::man.asciidoc[] NAME ---- tito - manage RPM based projects using git SYNOPSIS -------- tito init tito tag [OPTIONS] tito build --test --rpm tito build [OPTIONS] tito report DESCRIPTION ----------- After setting up a directory as a Git repo, use `tito` to manage the tags and builds. A simple workflow may look like: . Save user preferences as described in `titorc(5)` . Initialize a `rel-eng` directory . 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]` OPTIONS ------- `tito init` ~~~~~~~~~~~ This will create a top-level metadata directory called "rel-eng/" and commit it to git. This directory will store tito's configuration and package metadata on a per branch basis. It will be filtered out when creating .tar.gz's. 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). If you'd prefer to bump the package release instead (normally should just be used for changes to the spec file or patches applied within it), you can change the default_tagger class in rel-eng/tito.props to ReleaseTagger. This will affect all packages in this git branch; if you'd prefer to do this on a per-package basis you can do so in a package specific `tito.props`. -h, --help:: show this help message and exit --debug:: print debug messages --offline:: do not attempt any remote communication (avoid using this please) -o 'OUTPUTDIR', --output='OUTPUTDIR':: Write temp files, tarballs, and RPMs to 'OUTPUTDIR'. Create sub-directories as needed by rpmbuild(8). (default `/tmp/tito`) --tag-release:: Deprecated, no longer required. --keep-version:: Use spec file version/release exactly as specified in spec file to tag package. --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':: Use 'MESSAGE' as the default changelog message for new packages -u, --undo:: Undo the most recent (un-pushed) tag. `tito build [options]` ~~~~~~~~~~~~~~~~~~~~~~ -h, --help:: show this help message and exit --debug:: print debug messages --offline:: do not attempt any remote communication (avoid using this please) -o 'OUTPUTDIR', --output='OUTPUTDIR':: Write temp files, tarballs and RPMs to 'OUTPUTDIR'. (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` --dist='DISTTAG':: Apply 'DISTTAG' to 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 --list-tags:: List tags for which we build this package. If you set --debug together with this option, you will see all tags and whether they are whitelisted or blacklisted. --only-tags='KOJI_TAG':: Build in koji only for specified tags. Can be specified multiple times. --upload-new-source='CVS_NEW_SOURCES':: Upload a new source tarball to CVS lookaside. (i.e. runs 'make new-sources') Must be used until 'sources' file is committed to CVS. --rpmbuild-options='OPTIONS':: Pass 'OPTIONS' to 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. --builder-arg='BUILDER_ARGS':: Custom arguments specific to a particular builder. (key=value) `tito release [options] TARGETS` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Runs the release targets defined in rel-eng/releasers.conf. -h, --help:: show this help message and exit --debug:: print debug messages --offline:: do not attempt any remote communication (avoid using this please) -o 'OUTPUTDIR', --output='OUTPUTDIR':: Write temp files, tarballs and RPMs to 'OUTPUTDIR'. (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. --no-build:: Do not perform a brew/koji build, only DistGit (only for Koji/DistGit releasers) --all:: Run all release targets defined in rel-eng/releasers.conf. --list:: List all release targets defined in rel-eng/releasers.conf. --all-starting-with=ALL_STARTING_WITH:: Run all release targets starting with the given string. (i.e. if you have defined release targets yum-f15 and yum-f14 in releasers.conf, --all-starting-with=yum will run only these targets, and ignore any others.) `tito report` ~~~~~~~~~~~~~ Display 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. 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 --builder-arg mock=fedora-15-x86_64 --rpm SEE ALSO -------- titorc(5) releasers.conf(5) tito.props(5) /usr/share/doc/tito-*/README.mkd AUTHORS ------- include::AUTHORS[]