我有'更新'钩子的问题。在新分支的情况下,它将得到一个0000000000000000000000000000000000000000作为'oldrev'。我不知道如何处理这种情况。Git接收/更新挂钩和新分支
我们有这样的要求,即每个提交消息引用一个有效的Jira问题。所以我在中央仓库上安装了一个“更新”钩子。该钩子获得“oldrev”和“newrev”。然后我通过那些“混帐转列表”是这样的:
git rev-list $oldrev..$newrev
这给了我所有转速下,我可以然后遍历列表,并做我需要做的。
问题是,当用户按下一个新的分支时,钩子获取0000000000000000000000000000000000000000作为oldrev。和“混帐转列表”简单地抱怨:
fatal: Invalid revision range 0000000000000000000000000000000000000000..21bac83b2
那么,如何让所有的都在新的分支转速的名单?我已经在网上查了很长一段时间了,什么都没发现。这个例子钩,我发现无论是
- 不处理这个问题,失败,上面的错误消息
- 错误地试图通过设置OLDREV为“”,它返回自启错误的结果来解决问题-list
- 干脆放弃,当他们遇到的这些OLDREV
无声音特别兴奋。
那么有人有任何想法如何得到正确的答案在这种情况下?我在考虑查询git是否“给我所有可从newrev获得的转发,但不能从任何其他分支(=除新分支以外的所有分支)”。但即使如此,如果从新分支合并到任何旧分支,这也会给出错误的答案。
我不确定它是否与我的环境或git更新有些奇怪,但否定是删除当前分支上的引用。我必须做这样的事情:'git rev-list $(git for-each-ref --format ='%(refname)'“refs/heads/*”| grep -v'$ ref'| sed '/'/'^ /')“$ newrev”' – mmalone 2012-11-08 01:47:44
为了在'update'(和'pre-receive')钩子中使用,如问题中所述,这些答案都更加复杂和昂贵。约瑟在下面的答案是最简单和最有效的;这应该是IMO的选择答案。 – MadScientist 2014-06-01 19:41:26
@mmalone你是对的。我不得不添加“| grep -v'$ rev'”。否则,我总是得到empy结果 – dritan 2015-03-31 09:18:14