2 个不稳定版本
0.2.0 | 2022年4月3日 |
---|---|
0.1.0 | 2022年3月26日 |
在 开发工具 中排名第 1649
25KB
229 代码行
git-bump
使用 Lua 脚本一致地提升版本号。
动机
在发布新的软件版本时,通常有几个地方需要更新当前的版本号
- 配置文件,如
Cargo.toml
和package.json
- 定义您应用程序常量的源文件
- 在您的存储库根目录中的一个常规的
VERSION
文件 - 您的变更日志
- 可能还有很多其他地方,具体取决于您的具体需求和工作流程
此外,根据您的工作流程,您可能首先想将版本提升到类似于 1.2.3-RC
的东西,然后在一些最终测试后提升到 1.2.3
,最终提升到开发版本 1.3.0-SNAPSHOT
。
由于这些任务可以被很好地自动化,您可能想要一个为您执行提升的小脚本。我甚至在每个项目中都结束了一个 bump.sh
,它们都非常相似,尤其是那些用于相同编程语言的。为了避免在每个存储库中都出现这种样板代码,我提出了 git-bump
,它可以通过 Lua 脚本进行配置。
git-bump
在某些位置中搜索配置文件,将它们聚合起来,并对每个定义的文件调用一个自定义的 Lua 函数。这样就可以定义全局版本提升函数,可以在每个存储库中使用。
安装
可以通过 Cargo 通过 crates.io
简单地安装 git-bump
cargo install git-bump
用法
USAGE:
git-bump <VERSION|--list-files|--print-sample-config>
ARGS:
<VERSION> Version to set
OPTIONS:
-h, --help Print help information
--list-files List files that would be updated
--print-sample-config Print sample config file
要将版本号提升到 1.2.3
,操作非常简单
git-bump 1.2.3
或者,使用 Git 子命令语法
git bump 1.2.3
嗯,可能并没有那么简单。如果您还没有配置文件,将不会发生任何操作。
为了首次成功,让我们从 Git 仓库根目录的一个非常简单的配置文件开始。命名为 .git-bump.lua
(前导 .
表示 Linux 中的隐藏文件,此类配置文件通常如此)并包含以下内容
return {
VERSION = function(version)
return version
end,
}
期望配置文件返回一个 Lua 表。键是您要在 Git 仓库根目录下运行的文件名。值是一个 Lua 函数,接受两个参数:作为 git-bump
参数给出的版本和文件的原始内容。如果不需要当前文件内容,可以忽略第二个参数,Lua 不关心额外的参数。函数需要返回文件的新内容,然后将被写入相应的文件。
在这个例子中,文件 VERSION
将仅包含给定的版本字符串。
更复杂的例子可以在 示例函数 部分找到。
由于此类配置可能在不同仓库之间共享,git-bump
不会创建新文件,而只操作现有文件。因此,在这个例子中,创建 VERSION
并再次运行提升器。
$ touch VERSION
$ git bump 1.2.3
$ cat VERSION
1.2.3
要创建具有多个预定义菜谱的示例配置文件,请运行
git bump --print-sample-config >.git-bump.lua
要打印出配置文件中配置的现有文件列表,这些文件将在提升过程中被处理,请运行
git bump --list-files
钩子函数
除了为指定文件提供新内容外,还可以定义在将新内容写入文件之前或之后运行的钩子函数。
pre_func
可以用来在更新之前创建文件的备份。可能使用 post_func
来对修改后的配置文件进行一些清理工作。
钩子必须以 Lua 表的形式返回,包含 pre_func
和 post_func
成员。两个成员都是可选的。如果钩子函数不存在,则会被静默忽略。
以下是一个简单的、假设的例子,用于演示钩子函数的使用。要查看正确的示例,请参阅 示例函数 部分。
return {
VERSION = function(version)
local os = require("os")
local pre_func = function()
os.execute("cp VERSION VERSION.old")
end
local post_func = function()
os.execute("git commit -m 'Update VERSION' VERSION")
end
return version, {pre_func = pre_func, post_func = post_func}
end
}
配置文件位置
提升配置文件将在以下位置搜索
-
$HOME/.git-bump.lua
(Unix)或%USERPROFILE%\.git-bump.lua
(Windows)每个用户的全局配置文件。
-
$GIT_DIR/git-bump.lua
每个仓库的配置文件,不建议共享。
-
$GIT_WORK_TREE/.git-bump.lua
每个仓库的配置文件,可以检查到 Git 中进行共享。
这些位置将按顺序评估,较晚的文件将覆盖先前的具有匹配键的映射。缺少的配置文件将被静默忽略。
如果您想显式忽略“更高”配置中的碰撞功能,您必须在“更低”的配置文件中声明它,如下所示:
return {
-- ...
["dummy.txt"] = function(_, content)
-- no bumping, just return unaltered content
return content
end
-- ...
}
示例函数
在此处找到最新的示例配置文件:https://github.com/FloGa/git-bump/blob/develop/.git-bump.lua
这是一个在配置文件中可能使用的函数的非详尽列表。如果您有更多默认函数的想法,请随时提交PR!
依赖关系
~12-22MB
~382K SLoC