Git 挂钩:远程存储库应该接受推送,只有在提交消息内容特定字符串时
Git Hooks: remote repository should accept push, only if commit message contents particular string
我正在服务器端编写更新挂钩。我已经成功限制了。
1. 文件大小
2. 文件扩展名
我现在想做的是,检查消息并仅在该内容字符串(例如 "INFO:" 时才接受)。
我已经在 update
钩子中检查了 git log
,但它只给出了已经接受的结果。
在 accepting/pushing 更改为存储库之前,我应该如何检查消息。
您可以从git官方网站看一下这个网站:Customizing Git - An Example Git-Enforced Policy
它有一个与您的用例非常相似的用例。具体这部分:
$regex = /\[ref: (\d+)\]/
# enforced custom commit message format
def check_message_format
missed_revs = `git rev-list #{$oldrev}..#{$newrev}`.split("\n")
missed_revs.each do |rev|
message = `git cat-file commit #{rev} | sed '1,/^$/d'`
if !$regex.match(message)
puts "[POLICY] Your message is not formatted correctly"
exit 1
end
end
end
check_message_format
我正在服务器端编写更新挂钩。我已经成功限制了。
1. 文件大小
2. 文件扩展名
我现在想做的是,检查消息并仅在该内容字符串(例如 "INFO:" 时才接受)。
我已经在 update
钩子中检查了 git log
,但它只给出了已经接受的结果。
在 accepting/pushing 更改为存储库之前,我应该如何检查消息。
您可以从git官方网站看一下这个网站:Customizing Git - An Example Git-Enforced Policy
它有一个与您的用例非常相似的用例。具体这部分:
$regex = /\[ref: (\d+)\]/
# enforced custom commit message format
def check_message_format
missed_revs = `git rev-list #{$oldrev}..#{$newrev}`.split("\n")
missed_revs.each do |rev|
message = `git cat-file commit #{rev} | sed '1,/^$/d'`
if !$regex.match(message)
puts "[POLICY] Your message is not formatted correctly"
exit 1
end
end
end
check_message_format