Cách tự động hóa thông điệp commit Git
(insight.infograb.net)*Khi bạn cảm thấy khó khăn lúc viết thông điệp commit Git
- Thông điệp commit có dùng emoji và kèm số issue thì dễ theo dõi và nhìn cũng đẹp hơn
- Nhưng thông điệp commit càng dài và phức tạp thì càng bất tiện mỗi lần viết, đồng thời cũng dễ mắc lỗi hơn
- Mỗi lần tìm emoji phù hợp là một việc rất mệt mỏi
*Ép buộc thông điệp commit Git bằng Git Hooks
- Git Hooks là tính năng chạy script do chúng ta định nghĩa khi xảy ra các sự kiện liên quan đến Git
- Tính năng này được chia thành server hook và client hook
*Server hook: sử dụng tính năng push rule của Git
- Nếu thêm script kiểm tra thông điệp commit vào hook pre-receive thì có thể ngăn không cho push lên server
- Trong GitLab, có thể dùng tính năng push rule để kiểm tra thông điệp commit bằng biểu thức chính quy
- Khi phát hiện thông điệp commit vi phạm biểu thức chính quy, push đó sẽ bị từ chối và phát sinh lỗi
*Client hook: kiểm tra trước khi push
- Có thể tạo script trong hook commit-msg, tức trước khi hoàn tất commit cuối cùng, để kiểm tra thông điệp commit
- Nếu muốn chỉnh sửa thông điệp commit thì viết script liên quan trong hook prepare-commit-msg
*Phương pháp tự động hóa thông điệp commit của Infograb
- Xây dựng hệ thống tự động hóa thông điệp commit bằng Husky và Commitlint
- Husky là mô-đun npm hỗ trợ quản lý Git Hooks. Tạo file hook chứa script trong thư mục .husky. Sau đó nhập lệnh
npx husky installthì script đó sẽ được đăng ký vào git - commitlint là công cụ giúp quản lý commit convention dễ dàng và kiểm tra thông điệp commit. Viết commit convention mà team đã thống nhất ở dạng JSON. Sau đó dùng lệnh commitlint để kiểm tra thông điệp
- Định nghĩa commit convention theo định dạng commitlint
- Dựa trên khung cơ bản của thông điệp commit, định nghĩa các thuộc tính phù hợp với từng team trong file commitlint.config.ts
- Đăng ký commitlint vào Husky
- Đăng ký lệnh commitlint trong hook commit-msg. Đưa script vào file .husky/commit-msg
- Thêm tự động hóa
- Tự động hóa việc gắn emoji hoặc chèn số issue
- Ở team Product của Infograb, chỉ cần nhập type (feat, fix) là emoji sẽ được thêm tự động, chữ cái đầu của type sẽ tự động được đổi thành chữ in hoa, và nếu branch có số issue thì sẽ được cấu hình để tự động gắn số issue vào footer
- Có thể đặt script tự động hóa vào hook prepare-commit-msg
2 bình luận
Dùng cùng với commitizen cũng rất ổn
Cảm ơn vì công cụ tuyệt vời này