典型的输出git-describe
看起来像
some-tag-32-gf31f980
Run Code Online (Sandbox Code Playgroud)
where some-tag
标记名称,32
表示在使用该标记提交后所描述的提交是32次提交,并且gf31f980
意味着提交ID被唯一缩写为f31f980
.
我的问题是关于g
在gf31f980
.为什么会这样?我的第一个想法是插入它来消除对输出的解析git-describe
.但我无法想到它实际上有助于它的任何情况.例如,32
组件可能被省略,并且无法知道上面的输出描述了在标签之后提交的提交32 some-tag
,而不是标记处的提交some-tag-32
.但这g
并没有帮助.
只提取提交ID的正则表达式匹配可以搜索/-g([0-9a-f]+)$/
.没有简单的方法来简化这一点; /-g(.*)$/
例如,你不能这样做,因为它可能错误地匹配g
标签名称中的a.没有g
你仍然可以做/-([0-9a-f]+)$/
,所以这g
并没有帮助你.非正则表达式解析过程的行为类似.
这g
是明确生成的; 相关的源代码(约240行builtin/describe.c
)是:
static void show_suffix(int depth, const unsigned char *sha1)
{
printf("-%d-g%s", depth, find_unique_abbrev(sha1, abbrev));
}
Run Code Online (Sandbox Code Playgroud)
搜索有关此信息的信息很难,因为相关术语g
是一个禁用词.
有什么g
用?
MJD*_*MJD 27
Jesse Luehrs在Twitter上立即指出这个问题在git-describe
手册页中得到了解答:
"g"前缀代表"git",用于根据管理软件的SCM描述软件版本.
归档时间: |
|
查看次数: |
1967 次 |
最近记录: |