Chuẩn Hóa Chính Sách Commit Message
Commit message là một phần quan trọng trong quá trình phát triển phần mềm, giúp duy trì lịch sử thay đổi của dự án trở nên rõ ràng và dễ theo dõi. Việc áp dụng quy tắc Conventional Commits không chỉ mang lại lợi ích cho con người mà còn cho máy móc, qua đó giúp tự động hóa các quy trình như phát hành phiên bản.
Tại Sao Nên Sử Dụng Conventional Commits?
Việc sử dụng một chuẩn mực như Conventional Commits giúp:
- Cải thiện tính rõ ràng: Những người khác trong nhóm có thể nhanh chóng hiểu được ý nghĩa của các thay đổi.
- Hỗ trợ tự động hóa: Giúp các công cụ tự động hóa dễ dàng xử lý commit log và tạo ra các bản phát hành.
Hướng Dẫn Thiết Lập commit-msg Hook Trên Máy Tính
Dưới đây là hướng dẫn chi tiết để bạn có thể chuẩn hóa commit message cho nhóm của mình.
Bước 1: Tạo Thư Mục Dành Cho Git Hooks
Chạy lệnh sau trong terminal để tạo thư mục cho Git hooks:
mkdir -p ~/.git-templates/hooks
Bước 2: Cấu Hình Git Để Sử Dụng Thư Mục Này
Tiếp theo, bạn cần cấu hình Git để sử dụng thư mục vừa tạo:
git config --global core.hooksPath ~/.git-templates/hooks
Bước 3: Tạo File commit-msg
Hook
Tạo một file có tên commit-msg
trong thư mục trên với nội dung sau:
#!/usr/bin/env bash
commit_msg_file=$1
commit_msg=$(cat "$commit_msg_file")
conventional_regex='^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(!)?(\([a-z0-9][a-z0-9\-]*[a-z0-9]\))?: [^\s].*[^\s]$'
if ! [[ $commit_msg =~ $conventional_regex ]]; then
echo "-------------------------------------------------------------------------"
echo " ❌ The commit message does not follow Conventional Commits specification"
echo " (see https://www.conventionalcommits.org/en/v1.0.0):"
echo " Format: type(scope)?(!)?: subject"
echo " Allowed types:"
echo " feat|fix|docs|style|refactor|perf|test|build|ci|chore|revert"
echo " Example: feat(api)!: Add validation to the create-user endpoint"
echo "-------------------------------------------------------------------------"
exit 1
fi
Bạn có thể tùy chỉnh thông báo lỗi và regex nếu cần thiết, để phù hợp với quy trình làm việc của nhóm bạn.
Ví Dụ Về Commit Message Hợp Lệ
Dưới đây là một số ví dụ về commit message hợp lệ:
feat: Thêm luồng onboarding cho người dùng mới
fix(api): Sửa lỗi xử lý cho phản hồi 404
refactor(ui)!: Cải tiến điều hướng để tốt hơn về khả năng tiếp cận
docs: Cập nhật README để phản ánh các thay đổi API
Bước 4: Biến Hook Thành Tệp Thực Thi
Để đảm bảo file commit-msg
có thể thực thi, chạy lệnh sau:
chmod +x ~/.git-templates/hooks/commit-msg
Bước 5: Áp Dụng Cho Kho Lưu Trữ Hiện Có
Các kho lưu trữ hiện có sẽ không tự động áp dụng hooks mới nếu thư mục .git/hooks
đã tồn tại. Trong trường hợp này, bạn có thể thực hiện một trong hai cách sau:
- Xóa hoặc đổi tên thư mục
hooks
trong repo để Git sử dụng hooks toàn cục. - Sao chép hoặc tạo symlink từ hook
commit-msg
vào thư mụchooks
của từng repo theo cách thủ công.
Kết Luận
Sau khi thiết lập hoàn tất, mọi commit message không đúng với quy tắc sẽ bị từ chối. Điều này đảm bảo rằng tất cả commits trong kho lưu trữ cục bộ của bạn tuân thủ chuẩn Conventional Commits, mang lại một quy trình làm việc hiệu quả và rõ ràng hơn cho cả nhóm phát triển. Hy vọng bài viết này sẽ hữu ích cho bạn và nhóm của bạn trong việc nâng cao chất lượng commit message!
Tài Liệu Tham Khảo
- Conventional Commits Specification
source: viblo