Branch strategy – Chiến lược phân nhánh.

1. Khi nào thì branch off
2. Khi nào thì merge 1 branch vào 1 branch khác?

Gitflow

– master: branch chính, luôn ở trạng thái deploy-ready (có thể deploy), tức là đạt sự ổn định cao. Branch master chỉ được merge vào từ branch develop.
– develop: branch phục vụ việc phát triển. Chừng nào một commit còn tồn tại trên branch develop mà không được merge vào branch master, chức năng đó đang trong quá trình phát triển và chưa đạt sự ổn định để deploy.

Các branch khác:

– hotfix: thường được sử dụng để thực hiện hotfix và ngay lập tức có thể được deploy, vậy nên branch hotfix cần được branch off (tạo) từ branch master và merge vào branch master để deploy, cũng như merge vào branch develop nhằm đảm bảo những hotfix này tồn tại cho lần release tiếp theo.

  • Branch off từ master
  • Merge vào: master, develop
  • Đặt tên: hotfix-*

– feature: thường được dùng để phát triển 1 chức năng hoàn chỉnh

  • Branch off từ develop
  • Merge vào: develop
  • Đặt tên: feature-*

– release: thường được dùng cho các bản release. Một khi release được merge vào master, một bản release mới đã sẵn sàng.

  • Branch off từ develop
  • Merge vào: master, develop
  • Đặt tên: release-*

Tips cho branch strategy

– hotfix được tạo từ master và merge vào master
– release tạo từ master và merge vào master

  • Trước ngày release, branch release được tạo từ master;
  • Mọi chức năng đã sẵn sàng release được merge vào branch release;
  • Thực hiện kiểm thử trên relase branch;
  • Nếu việc deploy thành công, branch release được merge vào branch master;
  • Reset release branch

Như vậy branch master không chỉ là deploy-branch mà còn là deployed-branch. Lợi thế

– hotfix được thực hiện nhanh;
– Luôn đảm bảo mọi commit tới branch master đã được deploy (test);
– Do đặc thù của dự án, một số việc kiểm thử chỉ được thực hiện và xác định khả năng thành công sau khi deploy lên production server. Việc sử dụng branch release ahead (đi trước) branch master đảm bảo nếu việc deploy không thành công, một bản deploy đã ổn định sử dụng branch master nhanh chóng được triển khai.

Một vài lưu ý khác:

– Đừng đặt tên gây hiểu nhầm: đặt tên biến, hàm dễ gây hiểu nhầm đã nguy hiểm, đặt tên branch còn gây hiểu nhầm thì việc một ngày đẹp trời sai lầm xảy ra bạn hay đội nhóm của bạn sẽ phải trả giá bằng nhiều hoặc rất nhiều thời gian.
– Đừng branch theo cấp cha con quá sâu. Đơn giản và có chiến lược cụ thể là đủ.
– Luôn thực hiện việc tạo pr (pull request) và kiểm soát source code chặt chẽ trước khi một branch được merge vào branch cha.
– Thực hiện forward-intergration (tích hợp trước): Ví dụ thay vì merge branch feature-room-price vào branch develop, chúng ta có thể làm ngược lại, merge develop vào feature-room-price. Việc này sẽ khiến branch develop ổn định, đảm bảo độ an toàn cần thiết và cô lâp được những bug đang được phát triển trên branch feature-room-price thay vì chỉ phát hiện ra lỗi sau khi được merge vào branch develop và phát sinh nhiều dirty commit.
– Giữ cho source code được đồng bộ và tích hợp liên tục vào các branch, nhằm sớm phát hiện những lỗi tích hợp và có phương án sớm.

Written by thaotrinh