Skip to content

Instantly share code, notes, and snippets.

@phamducminh
Last active May 18, 2022 16:13
Show Gist options
  • Save phamducminh/f1524e61bc454e2a87e1b8b9a7dface0 to your computer and use it in GitHub Desktop.
Save phamducminh/f1524e61bc454e2a87e1b8b9a7dface0 to your computer and use it in GitHub Desktop.
Merge Request Guide

Merge Request Guideline

In order to improve code quality we have to follow merge request rule.

By Minh Pham, 2020

Dùng merge request cho các branch: develop, release_*

Để tăng chất lượng code sau khi tách business team thì codebase của android sẽ app dụng rule là phải tạo request merge và được accept bởi reviewer với yêu cầu theo bên dưới:

  • Giai đoạn pick feature vào develop sẽ do lead của business team tạo merge request sau khi đã được pick vào bản release. Trách nhiệm review và accept sẽ do KhanhTM chia ra làm hoặc sẽ chuyển cho chuyên gia khác review.

  • Giai đoạn fix bug, UAT... các team-member tạo merge request vào develop/release_* , việc review và accept sẽ do người owner của feature (lead business team) làm

Hướng dẫn tạo Merge Request

Trước khi tạo Merge Request (MR):

  • Test code đầy đủ
  • Dò lại danh sách các commit, các thay đổi line by line (bằng Git UI tool)

Các bước tạo một Merge Request: Gitlab Basics: Add Merge Request

  • Click vào button New Merge Request
  • Chọn Source Branch là bug/feature branch, Target branch là branch sẽ được merge vào
  • Chọn Compare branches and continue

Chi tiết một Merge Request:

Title

  • Đối với bug mantis: copy Summary của bug mantis

Ví dụ: 12345: [FEA][Compress Video] Optimize time compress video

  • Đối với new feature: đặt title ngắn gọn thể hiện rõ tính năng của feature

Ví dụ: Support new chat log

NOTE:

  • Có thể dùng WIP để tạo MR ngay khi vừa tách branch và note các discussion, doc... vào để sau này xem lại.

Description

  • Đối với MR fix bug: ghi rõ lí do, hướng xử lí, phạm vi ảnh hưởng của bug

  • Đối với feature: có thể dùng template có sẵn cho new feature, note kĩ spec, documents, trello card, flow cũ như thế nào, flow mới improve gì

Assignee

Assign cho tác giả của bug/feature. Nếu là chính mình thì dùng Assign to me

Label (Quan trọng)

Chọn đúng label cho MR (có thể chọn nhiều label).

Các label bắt buộc của một MR:

Label Description
base MR sửa code base (thường là code về core)
bug MR fix các loại bug
document MR document
feature MR new feature
improve MR cải tiến một issue
optimize MR optimize code base, performance
other MR khác
uat MR cho các issue được UAT từ product
unit-test MR support unit-test

Các label diễn tả lifecycle của một MR:

Label Description
MR: DO NOT MERGE MR đang wip, hoặc không được merge
MR: need review MR cần review code
MR: ready to merge MR đã pass review, có thể merge dưới sự cho phép của Team Lead

Merge options

  • Delete source branch when merge request is accepted:

Branch nào sau khi merge mà không được dùng nữa (branch chỉ có 1 UAT, fixbug...) thì chọn thêm option sẽ xóa sau khi merge. NÊN CHECK

  • Squash commits when merge request is accepted

Không nên check nếu không hiểu rõ squash là gì. Có thể đọc thêm option này làm gì ở đây. Một lần nữa, KHÔNG NÊN CHECK.

Merge Request Cycle

1. Review code

Các bước review code:

  • Chọn người sẽ review (với fixbug, UAT...), có thể bổ sung các thông tin cần thiết hỗ trợ review tốt nhất như document, techspec, mantis...
  • Tag người sẽ review code vào mục discussion bằng cách @reviewer_domain. TUYỆT ĐỐI KHÔNG ĐỔI ASSIGNEE. Assignee là tác giả của bug/feature đó, sau này blame dễ dàng hơn.
  • Thêm label MR: need review
  • Báo reviewer biết để review MR này
  • Có thể thảo luận trực tiếp trên MR line-by-line, hoặc gặp mặt trước tiếp.
  • Discussion nào discuss xong thì nên mark resolve.

Các bước khi pass review:

  • Chỉ pass review khi đã resolve all discussions
  • Reviewer comment vào discussion thông báo đã pass review
  • Reviewer remove label MR: need review và thêm label MR: read to merge_
  • Tác giả thông báo với Team Lead MR đã done, có thể merge vào Target branch

2. Ready to merge

Đối với Team Lead:

  • Tiến hành click button Merge khi MR đã done và Target branch (thường là develop branch) chưa đóng code.
  • Khi thấy button Rebase thay vì button Merge, khoan click vội, liên hệ với tác giả của MR để xử lý.

Đối với tác giả MR:

Khi nhận được yêu cầu rebase Target branch (thường là develop) để tiến hành merge MR. Có 2 hướng xử lý: git merge hoặc git rebase

  • Nếu bug/feature branch chưa merge vào bất kì branch nào: dùng git rebase develop
  • Nếu bug/feateure branch đã merge vào ít nhất một branch (thường là branch daily của từng vertical team): dùng git merge develop

Note:

  • Cả 2 hướng xử lý trên đều phải đảm bảo Target branch (thường là develop) đã sync code mới nhất trên remote bằng lệnh git pull origin <target-branch>

  • Xem chi tiết hướng xử lý git mergegit rebase ở đây

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment