如何使预接收挂钩忽略已提交的提交

时间:2014-10-10 18:11:12

标签: git hook

我有一个预接收挂钩来验证提交消息,检查它是否在开始时有一个有效的JIRA问题。

但我有一些旧的提交不适合我的模式(很久以前就已经发布了)

示例:

  A--B--C--D--E--F
  ^              ^
  |              | 
  |              |_ HEAD
origin/master  

答:这是我的出生地/主人指向的地方

A,B,C和D:不包含有效提交消息的提交(它们不应该,它们真的很旧)

E和F:他们没事,有效的消息。

当我尝试跑步时:

git push origin HEAD:master

这只是一个快进(所有提交已经在远程存储库中)

我想让我的预接收脚本“检测”它,并且没有尝试验证提交A,B,C,D,E和F的消息。

我的接收前脚本收到3个参数:'A','F'和'refs / heads / master'

我的预接收脚本正在运行:

git rev-list A..F

这将返回A和F之间的提交列表,我将逐个迭代。

感谢。

2 个答案:

答案 0 :(得分:1)

使用git log --after=<date>并根据日期和消息文本进行过滤 某个日期之后的每次提交都应该有Jira问题编号。

答案 1 :(得分:1)

为什么不用git branch --contains之类的东西测试提交的可达性,只有在通过其他参考文件无法访问时才处理它?<​​/ p>

   alreadyPresent=$(git branch --contains ${commit} | wc -l)
   if [ ${alreadyPresent} -ne 0 ]
   then 
      echo "${commit} already processed"
   else
      echo "${commit} needs processing"

   fi