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
89 disttag
90 Dist tag variable, which is passed to rpmbuild for packages build
91 in this tag.
92
93 blacklist
94 Space separated list of packages, which should not be built in this
95 tag.
96
97 whitelist
98 If whitelist is present, only packages listed here can be built in
99 this tag. This also override blacklist.
100
101 scl
102 Specify name of Software Collection into which package should be
103 build.
104
106 Allows the user to write out a template file containing version and/or
107 release and add it to git during the tagging process.
108
109 template_file
110 Path to a file conforming to a Python string.Template, as described
111 at http://docs.python.org/2/library/string.html#template-strings.
112 Path is relative to root of the entire git checkout, as this is
113 likely to be stored in the top level .tito directory. The variables
114 $version and $release are available inside the template.
115
116 destination_file
117 Specifies a file to write, relative to the directory for the
118 package being tagged.
119
120 Example:
121
122 [version_template]
123 destination_file = version.txt
124 template_file = .tito/templates/version.rb
125
127 tito
128 If tito is older then specified version, it will refuse to
129 continue.
130
132 require_package
133 Comma separated list of packages, which needs to be installed prior
134 tagging. If those packages are not installed, tito will refuse to
135 continue.
136
138 tito.builder.Builder
139 Basic package builder. It create tar.gz of whole directory and
140 create src.rpm and build rpm using some supported method.
141
142 tito.builder.NoTgzBuilder
143 Builder for packages that do not require the creation of tarball.
144 Usually these package have source files checked directly into git.
145
146 tito.builder.UpstreamBuilder
147 Builder for packages that are based off an upstream git tag.
148 Commits applied in downstream git become patches applied to the
149 upstream tarball. For example - you are building package
150 foo-1.2-3... Tar.gz file is created from commit, which is tagged by
151 foo-1.2-1 and the diff between release 1 and 3 is put in spec file
152 as Patch0.
153
154 tito.builder.GemBuilder
155 Builder for packages that list a .gem as Source0, the .gemspec
156 shares a directory hierarchy with the .spec file and the upstream
157 does not want to check .gem files into their git repository.
158
159 tito.distributionbuilder.DistributionBuilder
160 Behave similar as tito.builder.UpstreamBuilder, but patch is
161 created for every release. Therefore package from previous example
162 will end up with tar.gz file created from tag foo-1.2-1 and with
163 Patch0: foo-1.2-1-to-foo-1.2-2.patch Patch1:
164 foo-1.2-1-to-foo-1.2-3.patch
165
166 tito.builder.FetchBuilder
167 See doc/builders.mkd.
168
169 [builder]
170 fetch_strategy = tito.builder.fetch.ArgSourceStrategy
171
172 ArgSourceStrategy here could be replaced with a custom strategy if you
173 were to have one in your lib_dir.
174
175 tito.builder.GitAnnexBuilder
176 See doc/builders.mkd.
177
178 Builder for packages with existing tarballs checked in using git-annex,
179 e.g. referencing an external source (web remote). This builder will
180 "unlock" the source files to get the real contents, include them in the
181 SRPM, then restore the automatic git-annex symlinks on completion.
182
184 All taggers which inherit from tito.tagger.VersionTagger (all to this
185 date), will update file GITROOT/.tito/packages/name-of-package and put
186 there one line which consist of version-release of package, space
187 delimiter, path to package directory relative to GITROOT.
188
189 tito.tagger.VersionTagger
190 Standard tagger class, used for tagging packages build from source
191 in git. Release will be tagged by incrementing the package version,
192 and the actual "Release" will be always set to 1.
193
194 tito.tagger.ReleaseTagger
195 Keep version and increment release.
196
197 tito.zstreamtagger.zStreamTagger
198 It is used for EUS packages.
199
200 tito.rheltagger.RHELTagger
201 Tagger which is based on ReleaseTagger and uses Red Hat Enterprise
202 Linux changelog format:
203
204 • Resolves: #1111 - description
205
206 • Related: #1111 - description
207
209 You can create section with the name same as releaser target and there
210 you can specify this option:
211
212 remote_git_name
213 This is useful for FedoraGitReleaser and DistGitReleaser and will
214 allow you to specify name of remote dist-git branch.
215
216 For example let say you have in releaser.conf: [git-sat] releaser =
217 tito.release.DistGitReleaser branches = satellite-6.0-rhel-6
218
219 and then you can add remote_git_name: [git-sat] releaser =
220 tito.release.DistGitReleaser branches = satellite-6.0-rhel-6
221 remote_git_name = ruby193-rubygem-simple-navigation And it will
222 push package into ruby193-rubygem-simple-navigation dist-git
223 despite the fact that it is in /rubygem-simple-navigation
224 directory. And project name (as taken from spec file) is
225 rubygem-simple-navigation.
226
227 tito.susetagger.SUSETagger
228 Tagger which is based on VersionTagger and deal with SUSE / OBS
229 specific separate changes file and format.
230
232 [buildconfig]
233 builder = tito.builder.Builder
234 tagger = tito.tagger.VersionTagger
235
236 [koji]
237 autobuild_tags = dist-5E-sw-1.2-candidate dist-f12-sw-1.2-candidate dist-f13-sw-1.2-candidate
238
239 [dist-5E-sw-1.2-candidate]
240 disttag = .el5
241
242 [dist-f12-sw-1.2-candidate]
243 disttag = .fc12
244 blacklist=jabberd-selinux
245
246 [dist-f13-sw-1.2-candidate]
247 disttag = .fc13
248 blacklist=jabberd-selinux
249
250 [requirements]
251 tito=0.3.0
252
254 tito(8) titorc(5)
255
257 Devan Goodwin <dgoodwin@rm-rf.ca>
258
259 James Bowes <jbowes@repl.ca>
260
261 Jan Pazdziora
262
263 Jesus M Rodriguez <jesusr@redhat.com>
264
265 Pall Sigurdsson <palli@opensource.is>
266
267 Miroslav Suchý <msuchy@redhat.com>
268
269 and: Adam Miller, Alex Wood, Aron Parsons, Brenton Leanhardt, Ivan
270 Nečas, John Eckersberg, Kenny MacDermid, Lukáš Zapletal, Luke Meyer,
271 Marian Csontos, Martin Bačovský, Michael Stead, Mike McCune, mscherer,
272 Paul Morgan, Sean P. Kane, Steve Ashcrow Milner
273
274
275
276tito 05/17/2021 TITO.PROPS(5)