【发布时间】:2016-02-29 04:21:08
【问题描述】:
我在构建时使用git describe 作为我的应用程序版本控制的驱动程序。
大致如下:git describe --always --dirty --match version*
我用version.1.2.3 之类的模式标记我的版本,并且构建根据最后一次使用version.* 标记的提交来计算应用程序的版本。
如果我没有标记给定的提交,那么版本号最终会类似于version.1.14.3-24-ged66bf5,它基于最近的标签、自该标签以来的提交次数和 git 提交 id。
这对我个人来说非常有效,但是在我的 CI 服务器上构建浅层克隆时遇到了问题。
当在 jenkins 中的 git build 上使用“浅克隆”选项时(我猜它只是在执行“--depth=1”),我的 git describe 命令不再执行我想要它执行的操作。
我的版本号最终成为提交 id - 我想这是因为浅克隆中没有标记版本,所以 describe 命令的 --always 参数最终会吐出提交 id。
我暂时可以通过不进行浅层克隆来解决这个问题。
但我真的很喜欢将我的版本控制从 git describe 中移除——即使是浅克隆,我如何才能继续使用它?
我认为我需要能够做的是在浅克隆时指定我希望深度是“从分支的尖端回到具有匹配version.*的标签的最新版本”。
这是我可以用 Git 做的事情吗?
【问题讨论】:
-
你有没有想过创建一个
git alias来做到这一点?我绝不是创建复杂工作流程的专家,但我知道您可以通过使用它们来实现非常疯狂的工作流程。或者使用 git hooks 来监听你的部署分支 (post-commit-hook) 并做几乎相同的事情。 -
@JensHöpken 这个 git 别名会是什么样子?
标签: git