我们有提交消息规则的鸡与鸡蛋情况。直到之后提交之后才能知道一条信息。我们认为,不要求用户修改提交(如果提交较旧,则需要重新绑定),如果用户只需通过“注释”机制添加信息就会很好。好的,到目前为止,这么好。在git预接收钩子中访问Notes
问题是,如果commit + notes信息不符合规则,我希望'pre-receive'钩子能够失败推送。然而,我似乎无法弄清楚如何查看给定提交的注释,除非笔记已经被提前提交。
我可以简单地允许笔记推送通过未选中,然后检查提交消息和它的笔记,当我看到提交。但是,这是一个不太理想的解决方法。我们可以保证订单先做笔记,然后提交。但是,这是一个黑客。由于笔记中的信息,如果提交+笔记失败,该怎么办?这意味着可以通过的说明需要修改。
相反,我想要同时获得笔记和提交(类似git push origin refs/notes/* refs/heads/<branch>
)。我们可以控制这个,因为我们推送使用包装脚本。如果两个推动一起发生,我应该能够通过/失败整个事情。没有错误的信息通过。
但我不能为了我的生活弄清楚如何看笔记。理想的做法是在推送中的每个提交中使用类似git log --format=%N -1 <commit>
的内容。但是这不会产生什么,我猜是因为提交和笔记都还没有完成。我试过git notes list
,希望能打印散列指向的对象(git cat-file -p <hash>
)。但git notes list
什么都没有产生。
想法?谢谢。
也许您需要接受临时分支机构,并且只有在所有信息都存在的情况下才可以回扣它们(有点像Gerrit中的提交门) – eckes