[VIETPRODEV] HƯỚNG DẪN VÀ QUY ĐỊNH VỀ CÁCH SỬ DỤNG GITLAB

Đây là hướng dẫn và quy định về cách sử dụng GitLab của công ty dành cho Developer. Nếu project bạn đang tham gia có quy định riêng thì thực hiện theo quy định của project, nếu không có thì bắt buộc tuân thủ các quy định dưới đây.


Lưu ý:
- Các bạn tham gia dự án cần sử dụng GitLab công ty (nếu chưa có tài khoản thì cung cấp họ tên và email cho mentor để nhận tài khoản)
- Khi làm dự án: Tất cả tên biến, tên hàm, tên nhánh, tên commit đều bắt buộc sử dụng tiếng Anh

Hướng dẫn
Clone dự án:
1. git clone "đường dẫn repo"
2. git checkout develop
3. git checkout -b "tên_nhánh_mới"
Sau khi hoàn thành task:
1. git add .
2. git commit -m "ghi chú thay đổi"
3. git push origin "tên_nhánh_mới"
Lưu ý:
- Nếu làm tính năng mới:  "tên_nhánh_mới" bắt đầu bằng "feat/tên_tính_năng", "ghi chú thay đổi" có dạng "feat(tên_module): mô tả ngắn"
- Nếu fix bug:  "tên_nhánh_mới" bắt đầu bằng "fix/tên_bug", "ghi chú thay đổi" có dạng "fix(tên_module): mô tả ngắn"
- Tham khảo thêm ở phần “Quy tắc” bên dưới

4. Lên trang gitlab tạo merge request (MR) để merge vào develop
5. Gửi MR cho maintainer

6. Sau khi maintainer đã merge code, thực hiện các lệnh sau:
+ git checkout develop
+ git pull origin develop
+ git checkout -b "tên_nhánh_mới" (khác với các nhánh đã tạo)
+ Thực hiện task mới




Quy tắc
Dưới đây là một số nguyên tắc chung và mẫu đặt tên commit để bạn có thể tham khảo, áp dụng cho dự án của mình:

1. Định dạng tiêu chuẩn (Conventional Commits)
Áp dụng cấu trúc:
<type>(<scope>): <subject>
type: Loại thay đổi, thường dùng:
feat: Thêm tính năng mới
fix: Sửa lỗi
doc: Thay đổi liên quan đến tài liệu
style: Định dạng code, khoảng trắng, dấu chấm phẩy… (không ảnh hưởng logic)
refactor: Tái cấu trúc code (không thêm tính năng, không sửa lỗi)
test: Thêm/sửa test
chore: Cấu hình, script, công cụ, task mà không ảnh hưởng vào src
scope (tuỳ chọn): Phạm vi module hoặc component (ví dụ auth, ui, api)
subject: Mô tả ngắn gọn (<= 50 ký tự), viết ở thì hiện tại, không viết hoa đầu câu và không có dấu chấm ở cuối.
Ví dụ:
feat(auth): add JWT refresh-token endpoint
fix(ui): correct button color on hover
docs: update CONTRIBUTING.md with code style rules

2. Ghi chú chi tiết trong phần body (tuỳ chọn)
Cách dùng: để thông tin bổ trợ, giải thích “why” (tại sao) chứ không chỉ “what” (cái gì).
Ngắt dòng sau subject bằng 1 dòng trắng, sau đó mỗi dòng tối đa ~72 ký tự.

fix(api): handle null user profile

Trước đây khi người dùng chưa cập nhật profile thì endpoint /profile
sẽ trả về lỗi 500. Bổ sung kiểm tra null và trả về đối tượng rỗng.

3. Tham chiếu issue / ticket
Nếu commit liên quan Issue trên GitHub hoặc ticket, thêm dòng footer:
fix(auth): prevent SQL injection

hoặc

feat(ui): implement dark mode toggle

4. Nguyên tắc chung
Viết ở thì hiện tại: “add feature” (✗ “added feature”, “adds feature”)
Ngắn gọn – rõ ý: <= 50 ký tự cho subject.
Không dùng dấu chấm câu ở cuối subject.
Imperative mood: treat it like giving lệnh (“fix bug”, “update docs”).
Không viết quá chung chung: tránh “update code”, “fix stuff” → hãy cụ thể là “fix null pointer exception in checkout”.

5. Ví dụ tổng hợp
feat(payment): support PayPal checkout flow
- Thêm endpoint /payment/paypal/create
- Cập nhật UI hiển thị nút PayPal
- Viết unit test cho service mới

Áp dụng nhất quán chuẩn commit message sẽ giúp lịch sử commit rõ ràng, dễ theo dõi và tự động hóa (semver, changelog generation…) thuận tiện hơn. Nếu dự án của bạn có quy ước riêng, hãy thêm ở CONTRIBUTING.md để cả team cùng tuân thủ.
