我正在使用git describe
作为构建时在我的应用程序中进行版本控制的驱动程序。 大致是它的样子:git describe --always --dirty --match version*
如何合理地将“git describe --match”与浅层克隆结合使用?
标记我的版本,像version.1.2.3
模式,并构建出数字基于什么关最后一次提交的应用程序的版本被标记的东西,如version.*
了。 如果我没有标记给定的提交,那么版本号码最后会出现类似version.1.14.3-24-ged66bf5
的内容,它基于最近的标记,自该标记以来提交了多少次提交以及git commit id。
这对我个人而言确实很好,但是我在CI服务器上建立一个浅层克隆时遇到问题。当我在我的git build上使用“浅克隆”选项时(我猜这只是在执行“--depth = 1”),我的“git describe”命令不再按照我希望的那样执行做。 我的版本号最后只是提交ID - 我猜这是因为在浅克隆中没有标签版本,因此describe命令的--always
参数只是最终将提交ID吐出。
我可以通过不做浅层克隆来解决这个问题。
但我真的很喜欢把我的版本从git描述中解放出来 - 即使对浅层克隆我怎么能继续使用它呢? 我认为我需要做的是在浅层克隆时指定深度为“从分支尖端回到具有匹配version.*
的标签的最新版本”。
这是我能用Git做的事吗?
你有没有想过建立一个'混帐alias'是做到了这一点呢?我绝不是在创建复杂的人的专家,但我知道,你可以得到相当疯狂的工作流程来实现,通过使用它们。 或者使用侦听您的部署分支('post-commit-hook')的git钩子,并做几乎相同的事情。 –
@JensHöpken这个git别名是什么样的? – Shorn