Tôi muốn hạn chế những người cam kết có định dạng thông báo cam kết cụ thể, làm cách nào để thực hiện điều đó?Làm cách nào để đặt mẫu cho tin nhắn git commit?
Ví dụ: Pair_Name|Story_Number|Commit_Message
Tôi muốn hạn chế những người cam kết có định dạng thông báo cam kết cụ thể, làm cách nào để thực hiện điều đó?Làm cách nào để đặt mẫu cho tin nhắn git commit?
Ví dụ: Pair_Name|Story_Number|Commit_Message
Có một pre-commit-msg
hoặc commit-msg
móc, mà bạn có thể sử dụng:
Git Repos đi kèm với móc mẫu, ví dụ mẫu commit-msg
móc dưới git/hooks/commit-msg.sample
bắt các dòng Đã ký-off-by.
# This example catches duplicate Signed-off-by lines.
test "" = "$(grep '^Signed-off-by: ' "$1" |
sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
echo >&2 Duplicate Signed-off-by lines.
exit 1
}
Để bật móc, đừng quên làm cho nó hoạt động được.
Dưới đây là một số ví dụ hư cấu, mà sẽ chỉ chấp nhận cam kết thông điệp của các london|120|something ...
và những thứ tương tự:
#!/usr/bin/env ruby
message_file = ARGV[0]
message = File.read(message_file)
# $regex = /\[ref: (\d+)\]/
PAIRS = ["london", "paris", "moscow"] # only these names allowed
STORIES = "\d{2,4}" # story must be a 2, 3 or 4 digit number
MESSAGE = ".{5,}" # message must be at least 5 chars long
$regex = "((#{PAIRS.join('|')})\|#{STORIES}\|#{MESSAGE})"
if !$regex.match(message)
puts "[POLICY] Your message is not formatted correctly"
exit 1
end
Trong sử dụng:
$ git ci -m "berlin|120"
[POLICY] Your message is not formatted correctly
$ git ci -m "london|120|XX"
[POLICY] Your message is not formatted correctly
$ git ci -m "london|120|Looks good."
[master 853e622] london|120|Looks good.
1 file changed, 1 insertion(+)
Lưu ý: loại này hạn chế cũng là một phần của gitolite ()cho phép tất cả các loại séc khi đẩy tới repo)
Bạn có thể xem một ví dụ tại "git gitolite (v3) pre-receive
hook for all commit messages".
Ý tưởng với gitolite là bạn có thể dễ dàng triển khai móc đó trên các bản ghi cụ thể, cho các nhóm người dùng cụ thể.