2016-10-11 17 views
1

我的代码如下Git的提交版本号为5个字符长的Ruby脚本中使用相当格式时

system('git log --pretty=format:[%h]: %an') 

其中%小时之后获得的提交的版本ID,它是7个字符长,并%的作者姓名。

我的问题是,我想有5位数字修订ID而不是7,但我找不到任何形式的标志。

--date=iso-strict 

或其他任何情况。

你能告诉我该怎么做吗?

+0

我被要求做5个字符,而不是我同意你的事实。你能解释后期过程是如何工作的吗? –

回答

1

7位数是默认值,是确保中等规模项目唯一性的普遍接受的最小值。任何东西都会带来碰撞风险。如果要修剪它,你可以问:

--abbrev=5 

这可能是由git命令否决,如果5位值不是唯一的。考虑这个值最小值而不是最大值。

您可以通过git log --help了解更多信息。

作为一个说明,你一般要突破参数system,以避免它们之间的混淆:

system("git", "--log", "--pretty-format=...") 

,在任意文件名路过那些可以通过外壳在那些方面进行解释时是特别必要的危险的。

1

Tadman的答案已基本完成。然而,我为git log红色页面,并在格式部分发现了一些有趣的内容(你也可以使用here)。

您可以使用以前的占位符截断任何占位符,例如。如果下一个占位符的长度大于5,则该命令将正确截断,否则填充右边。

所以你的情况,这将截断为5:

system('git log --pretty=format:[%<(5,trunc)%h]: %an') 

这里唯一的问题是,你只会有3个有用的数字,因为当它截断,格式添加..表明你的占位符不完整。所以结果的一个例子是:

5fe.. 
8b9.. 
2cb.. 
e5d.. 
605.. 
20c.. 
相关问题