deriving version numbers from a git repository似乎是匹配版本号的好方法,但我的方案有点不同。
我生成的版本号我想创建隐藏的引用(因此默认情况下它们不会发送给其他客户端)。我不希望客户在他们的提取上看到一堆版本流失。
问题是, - match仅适用于标签,即使您使用--all标志。
示例:
git update-ref refs / _v.master.0.1 c2897c8338e02b99644640f3afb829c04cb48439
这会创建隐藏的参考
git describe --all c2897c8338e02b99644640f3afb829c04cb48439
_v.master.0.1 [显示]
然而这并没有任何回报:
git describe --match _v * --all c2897c8338e02b99644640f3afb829c04cb48439
致命的:找不到名字,不能描述任何东西。
我在documentation中看到--match"只考虑与给定的glob(7)模式匹配的标签",但这似乎很蹩脚,匹配应适用于任何参考类型,假设其他修饰符(-all --tags等)限制了ref类型的范围。
我还有其他办法吗?我想到的一种方法是在一个客户端上创建标签,并将它们(在推送和获取时间)映射到隐藏的refs到/来自原点,但这似乎是很多额外的工作。如果不是客户端,我上面提到的ref匹配是否可用?
提前感谢!
答案 0 :(得分:0)
您必须使用Git 2.14.x / 2.15(2017年第4季度)
进行检查"
git describe --match <pattern>
&#34;已被教导要好好玩 &#34;--all
&#34;选项。
commit 6d68b2a见Max Kirillov (max630
)(2017年9月20日)
(Junio C Hamano -- gitster
--合并于commit 8c1bc7c,2017年9月29日)
describe
:教--match
处理分支和遥控器当
git describe
使用--match
时,它基本上只匹配标记 即使指定了--all
参数,也会忽略它。通过匹配分支名称和
$remote_name/$remote_branch_name
来修复它, 用于具有指定模式的远程跟踪参考 相应地更新文档并添加测试。
它还涉及负面模式:
例如,假设您希望找到第一个正式发布标记 包含某个提交。如果我们假设官方发布标签 形式为&#34;
v*
&#34;和预发布的候选人包括&#34;*rc*
&#34;在他们的 name,我们现在可以找到引入提交的第一个release标记abcdef
:
git describe --contains --match="v*" --exclude="*rc*" abcd
请注意,Git 2.16.x / 2.17(2018年第一季度)将恢复&#34; git describe --all
&#34;的正确输出。
请commit 1bba001查看Daniel Knittl-Frank (knittl
)(2017年12月11日)
(由Junio C Hamano -- gitster
--合并于commit fac64e0,2018年1月23日)
的标签时
describe
:prepend&#34;tags/
&#34;描述具有嵌入名称&#34;
git describe
&#34;的手册页命令解释了预期 使用--all
选项时的输出,即完整的参考路径 显示,包括heads/
或tags/
前缀。当212945d(&#34;教git-describe 在输出&#34;,2008年2月28日,v1.5.5-rc0)之前验证带注释的标签名称使得Git更喜欢带注释标签的嵌入名称,它意外地改变了输出 在给出
--all
标志时格式化,只打印标签的名称 没有前缀。检查是否指定了
--all
并重新添加&#34;tags/
&#34;这个的前缀 修复回归的特例。