2 个不稳定版本

0.2.0 2021 年 11 月 5 日
0.1.6 2021 年 2 月 20 日

#2309 in 开发工具

MIT 许可证

27KB
462

autover

current version on crates.io

为您的 git 项目提供自动语义版本控制。

安装

  1. 下载最新版本之一,或使用 cargo build 编译。
  2. 在您想要开始版本控制的仓库中运行 autover init
  3. (可选) 使用 autover set <version> 设置您的应用程序版本
  4. 推送到远程仓库!

它是如何工作的?

autover 是一个应用程序,它使用项目的 git 历史记录来 计算 项目的版本,具体是通过在项目的 git notes 中放置一些数据。

它从 0.0.0 开始并递增 -- 初始提交是 0.0.0。如果您想要不同的起始点,请在初始提交上使用 autover set

因为它使用 git 笔记,所以您确实需要推送笔记引用。 autover init 设置您的 git 配置,以便它将推送

用法

限制

您只能在每次提交中更改版本一次。例如,要更新主版本和发布标签,您必须使用两个单独的提交。

这可能会在未来更改,但为了简化,已从本版本中省略。

获取当前版本

不带参数调用 autover 将返回当前版本

$ autover
1.2.3-alpha

手动设置版本

如果您是首次使用 autover,并且它正在接管团队人类版本控制的责任,您可能已经有一个版本号。

您可以使用 autover set 告诉 autover 从该版本开始计数。

$ autover set 1.2.3-alpha

帮助

$ autover help
autover 
Laurence Pakenham-Smith <[email protected]>
Automatic calculatable versions

USAGE:
    autover [OPTIONS] [SUBCOMMAND]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --count-patch <COUNT_METHOD>    Choose the counting method from merge (default), commit, or manual.

SUBCOMMANDS:
    clear    Clear the current commit of any manual version changes
    fetch    Fetch version changes from the remote repository
    help     Prints this message or the help of the given subcommand(s)
    init     Set up repository to auto-push version changes
    major    Increments the major version
    minor    Increments the minor version
    patch    Increments the patch version (manual COUNT_METHOD only)
    push     Push version changes to the remote repository
    set      Override the current version
    tag      Set or clear the prerelease tag

更新版本

增加补丁版本

有几种不同的方法可以做到这一点,两种是自动的,一种是手动的。

在合并提交上增加补丁(默认)

默认情况下,autover 在看到合并提交时会增加补丁号。

注意事项:简单的合并提交计数

这意味着来自任何分支的合并提交——一旦合并提交进入master分支,autover就无法判断它是合并到master还是发生在两个其他分支之间的合并。

非合并提交的增量补丁

调用autover -c commit将告诉autover将常规提交(具有单个父提交的提交)视为补丁增量。

手动增加补丁
$ autover patch
1.2.3-alpha -> 1.2.4-alpha

增加次要版本

$ autover minor
1.2.4-alpha -> 1.3.0-alpha

增加主要版本

$ autover major
1.3.0-alpha -> 2.0.0-alpha

更改标签

$ autover tag rc1
2.0.0-alpha -> 2.0.0-rc1

清除标签

$ autover tag
2.0.0-rc1 -> 2.0.0

撤销对当前提交的更改

$ autover clear

其他命令

确保注释能够自动获取和推送

$ autover init

此命令会在.git/config中添加几行,确保autover添加的任何git notes都可以与您的正常工作流程一起推送和获取。如果您在远程版本更新失败或无法拉取它们时遇到任何问题,这可能是原因所在。

手动推送/获取版本/注释

autover提供了fetchpush命令,如果您需要手动获取或推送注释引用,例如在ci运行期间。

注意事项

目前autover只支持每个注释(因此是每个提交)的一个命令

它还依赖于完整的历史记录,目前,因此如果您在ci中使用autover并且以深度0获取,则它可能不会按预期工作。

理由

为什么使用git notes

此应用程序的原始mvp使用提交中的标记,但我对这种方法有一些不满

  • 它会在提交中留下很多垃圾信息
  • 它鼓励人们创建空提交,这些提交除了增加版本外不做任何事情。

依赖关系

~15MB
~336K SLoC