用于管理基于rpm的git项目的工具。
项目描述
关于
Tito是一个用于使用git作为源代码存储库来管理基于RPM的项目工具。
Tito提供以下功能
- 使用递增的RPM版本或发布标记新版本。
- 基于自上次标记以来的git历史自动生成spec文件变更日志。
- 从任何标记创建具有一致校验和的可靠的tar.gz文件。
- 从任何标记构建源和二进制RPM。
- 从最近提交的代码构建源和二进制“测试”RPM。
- 构建具有适当disttags的多个源RPM,以便提交给Koji构建系统。
- 通过“mock”工具构建RPM。
- 在git的每个分支上
- 维护并发版本流。
- 改变构建/标记软件包的方式。
- 报告自上次标记以来任何差异或缺失的提交消息。
- 定义发布目标以将您的软件包发布到yum仓库或Fedora构建系统。
- 为您的项目需求定义自定义构建器/发布者实现。
- 从“上游”git仓库构建软件包,其中“下游”git仓库的修改将作为补丁应用于源rpm。
- 管理具有许多互不相连软件包的git仓库中的所有上述内容。
状态
相关项目
mockchain
来自 mock项目mock
内置的mock-scm
SCM支持- Fedora的 Koji 构建引擎和 fedpkg 工具
- OpenSUSE Build Service。
- 另请参阅 Fedora关于分层构建工具的维基页面
安装
从Fedora
dnf install tito
从CentOS / RHEL
# Enable EPEL https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
yum install tito
从 PyPI
pip install tito
Fedora的预发布版本(从git master
分支构建)
dnf copr enable @rpm-software-management/tito
dnf install tito
从git的 master
分支
-
首先安装适用于您的架构的tito依赖项,例如
x86_64
sudo dnf install --setopt=install_weak_deps=False \ $(dnf repoquery --arch x86_64,noarch --requires tito --resolve -q)
注意:这将安装tito的最新版本依赖项。如果
master
分支需要新的依赖项,则需要手动安装。 -
然后通过所谓的用户安装(即隔离到当前用户)安装tito
pip install --user https://github.com/rpm-software-management/tito/archive/master.tar.gz
要创建可安装到其他地方的tito rpm
sudo yum install python-devel asciidoc
tito build --rpm
# see what's in the package
rpm -ql -p /tmp/tito/noarch/tito-*.noarch.rpm
入门
从您的git仓库
tito init
这将创建一个名为".tito/"的顶级元数据目录并将其提交到git。此目录将根据分支存储tito的配置和软件包元数据。在创建.tar.gz文件时将过滤掉此目录。
标记软件包
在执行大多数操作之前,您需要标记您的软件包。
在此操作之前,您需要确保您的软件包spec文件位于该软件包的相对源树的顶部。
对于最常见的情况,单个项目git仓库的spec文件和项目根位于git仓库的顶级目录
docs/
mypackage.spec
README
.tito/
src/
test/
对于多项目git仓库,可以在各种子目录中定义软件包,只要它们不嵌套(即向上遍历树,永远不会遇到两个spec文件)
.tito/
package1/
docs/
mypackage.spec
README
src/
test/
subdir/
package2/
anotherpkg.spec
docs/
README
src/
test/
软件包可以按任何您喜欢的层次结构组织,甚至可以移动和重新标记,我们只需要在该软件包的顶级目录中具有spec文件。
通常使用以下命令标记软件包
tito tag
这将
- 在spec文件中增加版本或发布(使用--keep-version使用spec文件中定义的任何内容)
- 从上次标记以来自动生成变更日志(如果不需要,请使用--no-auto-changelog)
- 打开一个编辑器,让您有机会编辑该变更日志
- 将变更日志插入到您的spec中
- 提交这些更改,并生成一个git标签
默认情况下,如果您省略--keep-version,tito将通过增加rpm版本进行标记(即我们增加X.Y.Z中的Z。如果您希望增加软件包发布而不是版本(通常应仅用于spec文件或其中应用的补丁的更改),则可以在.tito/tito.props中将'tagger'类更改为ReleaseTagger。这将影响此git分支中的所有软件包,如果您希望按软件包进行此操作,可以在特定的tito.props中进行(请参阅下面的部分)。
一旦为软件包添加了标签,您需要将自动提交和标签推送到远程Git仓库,tito才会允许您构建它。(更好的独立Git仓库支持正在开发中,目前--offline选项可以帮助您)
有关更多选项,请参阅“man tito”。
构建软件包
要构建软件包的最新.tar.gz文件,请切换到该软件包的目录并运行
tito build --tgz
请注意,这个tar包每次都将有一个一致的校验和。
同样,--srpm和--rpm选项允许您构建二进制和源rpms。
使用--tag=TAG选项构建上述任何内容对应的任何过去标签。
如果您正在本地工作,并希望检查您的软件包是否仍然可以构建而无需将更改推送到远程仓库,请添加--test选项。这将从您最近提交的工作中构建一个测试rpm。(注意:不包括未提交的更改)
待办事项:记录--release的使用,它很复杂,并且尚未与Fedora的Koji进行测试。
有关更多选项,请参阅“man tito”。
发布软件包
Tito支持一种机制,您可以定义多个发布目标。
在.tito/releasers.conf中创建一个类似的部分
[yum-f15-x86_64]
releaser = tito.release.YumRepoReleaser
builder = tito.builder.MockBuilder
builder.mock = fedora-15-x86_64
rsync = fedorapeople.org:/srv/repos/dgoodwin/tito/fedora-15/x86_64/
您可以定义任意多个发布目标,并使用各种配置。要发布当前分支中最新的标记构建,请运行
tito release yum-f15-x86_64
您可以在命令行上指定多个目标。
有关定义发布目标的更多信息,请参阅“man 8 releasers.conf”。
有关“tito release”命令行参数的更多信息,请参阅“man tito”。
自定义构建器/标签器/发布器
如果tito提供的现有实现不能满足您的需求,您可以在tito.props的buildconfig部分中定义一个lib_dir。这是一个tito在执行期间会添加到Python路径中的目录,为您提供了一个定义自定义构建器、标签器和发布器的地方。
编写自定义Builder/Tagger/Releaser的过程留给读者练习,但基本上您将想要从tito.builder模块中的代码开始。从基础Builder继承,并覆盖您需要的方法。
请注意,如果您将自定义实现存储在源代码树中,它们需要在您使用的所有分支中保持同步,以确保一致的行为。此外,tito未来的版本可能会有所变化,这意味着您可能需要偶尔更新自定义实现。
Bodhi更新
如果您想自动化Bodhi更新,您可以利用Packit。在您的dist-git仓库中创建packit.yaml
,内容如下
jobs:
- job: bodhi_update
trigger: commit
dist_git_branches:
- fedora-all
- epel-7
- epel-8
- epel-9
显然,您可以更改要关注的分支列表。
有关更多信息,请参阅bodhi_update作业的文档。
故障排除
如果您意外创建了标签或希望重新进行,请确保您尚未推送标签,自动提交是git历史中最新的,然后运行
git tag -d YOURNEWTAG
git reset --hard HEAD^1
如果您的项目是独立的(没有远程引用您与之通信的权威引用),您可能希望将.tito/tito.props中的buildconfig部分的offline设置为"true",这样您就不需要每次调用时都指定--offline。
配置
请参阅
man 5 tito.props
man 5 releasers.conf
man 5 titorc
社区
如果您需要建议或想与tito开发者交谈,请加入我们在#tito
频道,位于irc.freenode.net。
使用tito管理的项目
以下是一个使用tito管理的项目列表。它不是试图成为每个使用tito的项目的不完整列表,而是几个潜在用户可以查看的示例。
- Mock
- 项目
- 蒂托
- Dnf
- 烛台
- dnf-plugins-core
- candlepin/subscription-manager
- rho
- sm-photo-tool
- vim-fugitive-pagure
如果你的项目使用蒂托,请随时将其添加此处。
外部文档
项目详情
tito-0.6.26.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8fe22de27eb366b4c5de31b32e405cf32ed967ab3274ccb5aea9fbfaf628c5c6 |
|
MD5 | 43c53b7ffb160617d5e752f1f9766628 |
|
BLAKE2b-256 | 162cfc471e1e82d0f0231a2b00b1e9288deda28255438e91214e5371ea5f8041 |