0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Giải Quyết Vấn Đề Commit Hỗn Loạn Với Quy Tắc Commitlint Tùy Chỉnh

Đăng vào 1 tháng trước

• 5 phút đọc

Vấn Đề: Mỗi Người Commit Khác Nhau

Bạn có biết khoảnh khắc khi bạn đang xem xét mã và nghĩ,
"Chờ đã... commit này liên quan đến nhiệm vụ Jira nào vậy?"

Chúng tôi đã trải qua điều đó.

Trong nhóm của chúng tôi, mỗi nhiệm vụ Jira đều có một ID rõ ràng như TWSF-1234, nhưng các tin nhắn commit của chúng tôi thì lại là một hỗn hợp. Một số có ID nhiệm vụ, một số thì không. Một số rất mô tả, trong khi những cái khác thì... không nhiều lắm.

Chúng tôi biết cần phải khắc phục điều này. Không chỉ cho bản thân chúng tôi, mà còn cho những người sau này - những người sẽ gỡ lỗi, triển khai, hoặc cố gắng hiểu chuyện gì đã xảy ra hai sprint trước.

💡 Ý Tưởng: Tự Động Hóa Tiêu Chuẩn

Chúng tôi không muốn chỉ dựa vào trí nhớ hoặc tính kỷ luật. Chúng tôi muốn một hệ thống hướng dẫn các lập trình viên viết các tin nhắn commit nhất quán, có thể truy dấu - mà không gây khó chịu.

Đó là khi chúng tôi tìm thấy **Commitlint**.

Commitlint kiểm tra các tin nhắn commit của bạn và đảm bảo chúng tuân theo một bộ quy tắc. Bạn có thể sử dụng các quy tắc tiêu chuẩn, hoặc - và đây là phần thú vị - bạn có thể viết quy tắc riêng của mình.


🛠️ Quy Tắc Tùy Chỉnh: Bắt Buộc ID Nhiệm Vụ Jira

Chúng tôi đã tạo ra một quy tắc kiểm tra xem phạm vi của tin nhắn commit có khớp với định dạng nhiệm vụ Jira của chúng tôi không: TWSF-<số>. Nếu không, commit sẽ bị từ chối với một thông điệp thân thiện.

Dưới đây là cấu hình của chúng tôi:

javascript Copy
module.exports = {
    extends: ['@commitlint/config-conventional'],
    rules: {
        'twsf-task-scope': [2, 'always'],
    },
    plugins: [
        {
            rules: {
                'twsf-task-scope': ({ scope }) => {
                    const regex = /^TWSF-\d+$/;
                    const isValid = regex.test(scope);
                    return [
                        isValid,
                        'Scope phải theo mẫu TWSF-<số-nhiệm-vụ>, ví dụ: TWSF-1234',
                    ];
                },
            },
        },
    ],
};

✅ Commit Hợp Lệ:

javascript Copy
feat(TWSF-1234): thêm nút xuất báo cáo

❌ Commit Không Hợp Lệ:

javascript Copy
fix(report): sửa lỗi xuất

Commit thứ hai sẽ bị chặn với một thông điệp rõ ràng cho biết lập trình viên cần sửa gì.


📦 Chia Sẻ Quy Tắc Qua Các Dự Án

Chúng tôi không dừng lại ở đó. Để làm cho quy tắc này có thể tái sử dụng trong tất cả các dự án của chúng tôi, chúng tôi đã đóng gói quy tắc này vào một thư viện npm riêng tư. Bây giờ, bất kỳ nhóm nào trong công ty cũng có thể cài đặt nó và ngay lập tức có được cùng một tiêu chuẩn commit.

Dưới đây là cách chúng tôi thực hiện:

  • Tạo một gói npm mới với cấu hình.
  • Xuất bản nó một cách riêng tư sử dụng phạm vi công ty của chúng tôi.
  • Trong mỗi dự án, chúng tôi chỉ cần cài đặt và mở rộng nó:
bash Copy
npm install --save-dev @ourcompany/commitlint-config-twsf

Và trong commitlint.config.js:

javascript Copy
module.exports = require('@ourcompany/commitlint-config-twsf');

🎯 Kết Quả: Commit Sạch, Nhất Quán, Có Thể Truy Dấu

Bây giờ mỗi commit đều kể một câu chuyện. Nó liên kết với một nhiệm vụ Jira, dễ hiểu và nhất quán trên toàn bộ. Không còn phải đoán, không còn phải đào bới.


Nếu đội của bạn đang gặp khó khăn với các tin nhắn commit lộn xộn, tôi rất khuyến khích thử nghiệm điều này. Nó đơn giản, hiệu quả, và tạo ra sự khác biệt thực sự trong phát triển hàng ngày.

Bạn muốn được hỗ trợ cài đặt? Hãy để lại bình luận hoặc nhắn tin cho tôi — tôi rất vui được chia sẻ những gì đã hiệu quả với chúng tôi.

Thực Hành Tốt Nhất

  • Giữ Ngắn Gọn: Các commit nên ngắn gọn và đi thẳng vào vấn đề.
  • Sử Dụng Ngôn Ngữ Rõ Ràng: Sử dụng ngôn ngữ dễ hiểu để mọi người có thể hiểu được nội dung commit.
  • Kiểm Tra Trước Khi Commit: Đảm bảo rằng tất cả các quy tắc đã được thực thi trước khi thực hiện commit.

Những Cạm Bẫy Thường Gặp

  • Bỏ Qua Quy Tắc: Một số lập trình viên có thể quên kiểm tra quy tắc và commit không hợp lệ.
  • Thiếu Kiên Nhẫn: Một số có thể cảm thấy phiền phức khi phải tuân theo quy tắc.

Mẹo Tối Ưu Hiệu Suất

  • Tự Động Hóa: Sử dụng CI/CD để tự động kiểm tra các commit.
  • Đào Tạo Nhóm: Đảm bảo tất cả các thành viên trong nhóm hiểu rõ quy tắc commit.

Khắc Phục Sự Cố

  • Commit Bị Từ Chối: Kiểm tra lại thông điệp commit để đảm bảo nó tuân theo quy tắc.
  • Tìm Kiếm Hỗ Trợ: Nếu bạn không chắc chắn về quy tắc, hãy yêu cầu trợ giúp từ các thành viên khác trong nhóm.

Câu Hỏi Thường Gặp

1. Tại sao cần quy tắc commit?
Quy tắc commit giúp duy trì sự nhất quán và dễ dàng truy xuất thông tin về các thay đổi trong mã nguồn.

2. Làm thế nào để cài đặt Commitlint?
Bạn có thể cài đặt Commitlint bằng cách sử dụng npm và thiết lập cấu hình như đã hướng dẫn ở trên.

3. Có cách nào để chia sẻ quy tắc này với các nhóm khác không?
Có, bạn có thể đóng gói quy tắc của bạn thành một thư viện npm riêng tư và chia sẻ nó với các nhóm khác trong công ty.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào