1TITO.PROPS(5) Tito User Manual TITO.PROPS(5)
2
3
4
6 tito.props - directives for tito(5) how to build package.
7
9 None
10
12 Project settings can be stored in files:
13
14 GITROOT/.tito/tito.props
15
16 GITROOT/SOME/PACKAGE/tito.props
17
18 The global .tito/tito.props is generally where settings are defined.
19 For some multi-project git repositories, individual packages can
20 override these settings by placing a tito.props in the project
21 directory. (i.e. same location as it’s .spec file)
22
24 tito.props can contain several sections:
25
27 This section and a couple of its properties are required. You can use
28 following variables:
29
30 builder
31 The fully qualified Builder class implementation to use. You can
32 either specify builders shipped with tito(5) (see BUILDERS section
33 below), or a custom builder located within the directory your
34 lib_dir option points to. This property is required.
35
36 tagger
37 The fully qualified Tagger class implementation to use. You can
38 either specify taggers shipped with tito(5) (see TAGGERS section
39 below), or a custom tagger located within the directory your
40 lib_dir option points to. This property is required.
41
42 lib_dir
43 Optional property defining a directory to be added to the Python
44 path when executing tito. Allows you to store custom
45 implementations of Builder, Tagger, and Releaser.
46
47 changelog_format
48 This option is used to control the formatting of entries when
49 generating changelog entries. The default value is "%s (%ae)". See
50 PRETTY FORMATS in git-log(1) for more information.
51
52 changelog_with_email
53 If set to 0, then entries in changelog (subject of commits) are not
54 followed by email of committer. Default is 1. This option is
55 deprecated and provided for backwards-compatibility only. New
56 configurations should consider changelog_format instead.
57
58 changelog_do_not_remove_cherrypick
59 If set to 0, it will not remove from cherry picked commits the part
60 "(cherry picked from commit ...)"
61
62 changelog_date_with_time
63 By default, changelog dates don’t contain time (e.g. Wed Nov 1
64 2017). When this option is set to True, changelog entries are
65 generated in a datetime format (e.g. Wed Nov 1 11:08:13 EDT 2017).
66 This feature requires RPM 4.14, therefore it is supported only on
67 Fedora 27, EPEL8, openSUSE Leap 15 and higher.
68
69 tag_suffix
70 An optional specification of a suffix to append to all tags created
71 by tito for this repo. Can be useful for situations where one git
72 repository is inheriting from another, but tags are created in
73 both. The suffix will be an indicator as to which repo the tag
74 originated in. (i.e. tag_suffix = -mysuffix)
75
76 tag_commit_message_format
77 This option is used control the text of git commit message that is
78 used when new tag is generated. You can use "%(name)s",
79 "%(release_type)s" and "%(version)s" placeholders.
80
81 tag_format
82 This option controls the format used in VersionTagger. If not
83 specified other taggers.
84
85 sign_tag
86 This boolean enables GnuPG signed tags using git tag -s.
87
88 fetch_sources
89 If true, download sources from predefined Source<N> addresses to
90 the SOURCE folder.
91
93 disttag
94 Dist tag variable, which is passed to rpmbuild for packages build
95 in this tag.
96
97 blacklist
98 Space separated list of packages, which should not be built in this
99 tag.
100
101 whitelist
102 If whitelist is present, only packages listed here can be built in
103 this tag. This also override blacklist.
104
105 scl
106 Specify name of Software Collection into which package should be
107 build.
108
110 Allows the user to write out a template file containing version and/or
111 release and add it to git during the tagging process.
112
113 template_file
114 Path to a file conforming to a Python string.Template, as described
115 at http://docs.python.org/2/library/string.html#template-strings.
116 Path is relative to root of the entire git checkout, as this is
117 likely to be stored in the top level .tito directory. The variables
118 $version and $release are available inside the template.
119
120 destination_file
121 Specifies a file to write, relative to the directory for the
122 package being tagged.
123
124 Example:
125
126 [version_template]
127 destination_file = version.txt
128 template_file = .tito/templates/version.rb
129
131 tito
132 If tito is older then specified version, it will refuse to
133 continue.
134
136 require_package
137 Comma separated list of packages, which needs to be installed prior
138 tagging. If those packages are not installed, tito will refuse to
139 continue.
140
142 tito.builder.Builder
143 Basic package builder. It create tar.gz of whole directory and
144 create src.rpm and build rpm using some supported method.
145
146 tito.builder.MockBuilder
147 Use mock instead of rpmbuild for building an RPM package. See
148 doc/builders.md.
149
150 tito.builder.NoTgzBuilder
151 Builder for packages that do not require the creation of tarball.
152 Usually these package have source files checked directly into git.
153
154 tito.builder.UpstreamBuilder
155 Builder for packages that are based off an upstream git tag.
156 Commits applied in downstream git become patches applied to the
157 upstream tarball. For example - you are building package
158 foo-1.2-3... Tar.gz file is created from commit, which is tagged by
159 foo-1.2-1 and the diff between release 1 and 3 is put in spec file
160 as Patch0.
161
162 tito.builder.GemBuilder
163 Builder for packages that list a .gem as Source0, the .gemspec
164 shares a directory hierarchy with the .spec file and the upstream
165 does not want to check .gem files into their git repository.
166
167 tito.distributionbuilder.DistributionBuilder
168 Behave similar as tito.builder.UpstreamBuilder, but patch is
169 created for every release. Therefore package from previous example
170 will end up with tar.gz file created from tag foo-1.2-1 and with
171 Patch0: foo-1.2-1-to-foo-1.2-2.patch Patch1:
172 foo-1.2-1-to-foo-1.2-3.patch
173
174 tito.builder.FetchBuilder
175 See doc/builders.mkd.
176
177 [builder]
178 fetch_strategy = tito.builder.fetch.ArgSourceStrategy
179
180 ArgSourceStrategy here could be replaced with a custom strategy if you
181 were to have one in your lib_dir.
182
183 tito.builder.GitAnnexBuilder
184 See doc/builders.mkd.
185
186 Builder for packages with existing tarballs checked in using git-annex,
187 e.g. referencing an external source (web remote). This builder will
188 "unlock" the source files to get the real contents, include them in the
189 SRPM, then restore the automatic git-annex symlinks on completion.
190
192 All taggers which inherit from tito.tagger.VersionTagger (all to this
193 date), will update file GITROOT/.tito/packages/name-of-package and put
194 there one line which consist of version-release of package, space
195 delimiter, path to package directory relative to GITROOT.
196
197 tito.tagger.VersionTagger
198 Standard tagger class, used for tagging packages build from source
199 in git. Release will be tagged by incrementing the package version,
200 and the actual "Release" will be always set to 1.
201
202 tito.tagger.ReleaseTagger
203 Keep version and increment release.
204
205 tito.zstreamtagger.zStreamTagger
206 It is used for EUS packages.
207
208 tito.rheltagger.RHELTagger
209 Tagger which is based on ReleaseTagger and uses Red Hat Enterprise
210 Linux changelog format:
211
212 • Resolves: #1111 - description
213
214 • Related: #1111 - description
215
217 You can create section with the name same as releaser target and there
218 you can specify this option:
219
220 remote_git_name
221 This is useful for FedoraGitReleaser and DistGitReleaser and will
222 allow you to specify name of remote dist-git branch.
223
224 For example let say you have in releaser.conf: [git-sat] releaser =
225 tito.release.DistGitReleaser branches = satellite-6.0-rhel-6
226
227 and then you can add remote_git_name: [git-sat] releaser =
228 tito.release.DistGitReleaser branches = satellite-6.0-rhel-6
229 remote_git_name = ruby193-rubygem-simple-navigation And it will
230 push package into ruby193-rubygem-simple-navigation dist-git
231 despite the fact that it is in /rubygem-simple-navigation
232 directory. And project name (as taken from spec file) is
233 rubygem-simple-navigation.
234
235 tito.susetagger.SUSETagger
236 Tagger which is based on VersionTagger and deal with SUSE / OBS
237 specific separate changes file and format.
238
240 [buildconfig]
241 builder = tito.builder.Builder
242 tagger = tito.tagger.VersionTagger
243
244 [koji]
245 autobuild_tags = dist-5E-sw-1.2-candidate dist-f12-sw-1.2-candidate dist-f13-sw-1.2-candidate
246
247 [dist-5E-sw-1.2-candidate]
248 disttag = .el5
249
250 [dist-f12-sw-1.2-candidate]
251 disttag = .fc12
252 blacklist=jabberd-selinux
253
254 [dist-f13-sw-1.2-candidate]
255 disttag = .fc13
256 blacklist=jabberd-selinux
257
258 [requirements]
259 tito=0.3.0
260
262 tito(8) titorc(5)
263
265 Devan Goodwin <dgoodwin@rm-rf.ca>
266
267 James Bowes <jbowes@repl.ca>
268
269 Jan Pazdziora
270
271 Jesus M Rodriguez <jesusr@redhat.com>
272
273 Pall Sigurdsson <palli@opensource.is>
274
275 Miroslav Suchý <msuchy@redhat.com>
276
277 and: Adam Miller, Alex Wood, Aron Parsons, Brenton Leanhardt, Ivan
278 Nečas, John Eckersberg, Kenny MacDermid, Lukáš Zapletal, Luke Meyer,
279 Marian Csontos, Martin Bačovský, Michael Stead, Mike McCune, mscherer,
280 Paul Morgan, Sean P. Kane, Steve Ashcrow Milner
281
282
283
284tito 07/22/2023 TITO.PROPS(5)