从githook的文档中说:
钩子可以通过环境、命令行参数和stdin获取它们的参数。有关详细信息,请参阅下面每个挂钩的文档。
但是上面提到的论点是什么?
如果我用这个命令提交:
git commit -m "my commit" --trailer "Helped-by: Nganu <committer@example.com>"
如何在预提交或准备提交消息挂钩中获得trailer
值?
我没有看到任何关于在pre-commit
或prepare-commit-msg
挂钩中获取参数的文档。我尝试使用类似$0
的bash参数,但失败了。
对于prepare-commit-msg
,
它需要一到三个参数。第一个是文件名包含提交日志消息。第二个是commit消息,可以是:message(如果给定-m或-F选项(;模板(如果给定了-t选项或配置选项commit.template已设置(;merge(如果提交是一个merge或存在.git/MERGE_MSG文件(;挤压(如果是.git/squash_MSG文件存在(;或commit,后跟commit对象名(如果是-c、-c或--给出了修改选项(。
我们可以从第一个参数中获取包含提交消息日志的文件,然后对其进行解析以获取尾部。
#!/bin/bash
msg_file=$1
echo msg_file:${msg_file}
# parse msg_file to get trailers
trailer=$(git interpret-trailers --parse ${msg_file} | grep '^Helped-by:')
echo Trailer: ${trailer}