git-describe的典型输出如下
some-tag-32-gf31f980其中some-tag是标记名,32表示所描述的提交在使用该标记提交后为32次提交,而gf31f980则表示提交ID唯一地缩写为f31f980。
我的问题是关于g in gf31f980。它为什么在那里?我的第一个想法是插入它来消除git-describe输出的歧义分析。但我想不出在任何情况下拥有它真的会有帮助。例如,可以省略32组件,并且无法知道上面的输出描述在标记some-tag之后提交32次,而不是在标记some-tag-32处提交。但g对此毫无帮助。
只提取提交ID的regex匹配可以搜索/-g([0-9a-f]+)$/。简化这一点没有简单的方法;例如,您不能执行/-g(.*)$/,因为这可能会错误地匹配标记名中的g。没有g,您仍然可以执行/-([0-9a-f]+)$/,因此g对您没有帮助。非正则表达式解析过程将表现出类似的行为。
g是显式生成的;相关的源代码(builtin/describe.c的第240行)是:
static void show_suffix(int depth, const unsigned char *sha1)
{
printf("-%d-g%s", depth, find_unique_abbrev(sha1, abbrev));
}很难搜索到有关这方面的信息,因为相关术语g是一个死胡同。
g是做什么用的?
发布于 2014-05-29 17:27:39
Jesse立即在Twitter上指出:这个问题是在手册页中回答的
"g“前缀表示"git”,用于根据软件管理的SCM来描述软件的版本。
https://stackoverflow.com/questions/23939214
复制相似问题