2016-10-07 57 views
10

Gần đây tôi đã tìm thấy ba khái niệm về quy trình làm việc trong GIT: GitFlow, GitHub Flow và GitLab Flow. Tôi đã đọc bài viết hay về nó (https://docs.gitlab.com/ee/workflow/gitlab_flow.html) nhưng tôi không hiểu Luồng GitLab rất tốt. Có lẽ vì tôi không phải là người bản xứ :)Sự khác nhau giữa GitHub Flow và GitLab Flow là gì?

Tóm tắt.

GitFlow (https://docs.gitlab.com/ee/workflow/gitdashflow.png).

Chúng tôi là chi nhánh chính là chi nhánh sản xuất. Ngoài ra chúng tôi có một chi nhánh phát triển nơi mọi nhà phát triển hợp nhất các tính năng của anh ấy. Đôi khi chúng tôi tạo chi nhánh phát hành để triển khai các tính năng của chúng tôi trong sản xuất. Nếu chúng ta có một lỗi trong nhánh phát hành, sửa nó và kéo các thay đổi vào nhánh phát triển. Nếu chúng tôi có một lỗi quan trọng trong sản xuất, tạo hotfix-chi nhánh mới, sửa lỗi và hợp nhất chi nhánh với sản xuất (master) và phát triển các chi nhánh.

Cách tiếp cận này rất tốt nếu chúng tôi hiếm khi hiển thị kết quả công việc của mình. (Có thể một thời gian mỗi 2 tuần).

Luồng GitHub (https://docs.gitlab.com/ee/workflow/github_flow.png).

Chúng tôi có chi nhánh chính là chi nhánh sản xuất. Và chúng tôi (là nhà phát triển) chỉ có thể tạo ra các chi nhánh để thêm các tính năng mới hoặc sửa lỗi và hợp nhất chúng với nhánh sản xuất (master). Nghe có vẻ rất đơn giản. Cách tiếp cận này phù hợp với lập trình cực đoan nơi chi nhánh sản xuất được triển khai nhiều lần trong một ngày.

Luồng GitLab (https://docs.gitlab.com/ee/workflow/production_branch.png, https://docs.gitlab.com/ee/workflow/environment_branches.png, https://docs.gitlab.com/ee/workflow/release_branches.png).

Tôi đã nhìn thấy các cụm từ mới như tiền sản xuất, chi nhánh sản xuất, chi nhánh phát hành (ổn định) và môi trường dàn dựng, môi trường tiền sản xuất, môi trường sản xuất. Họ có mối quan hệ gì giữa họ?

Tôi hiểu theo cách đó: Nếu cần thêm tính năng mới, chúng tôi triển khai chi nhánh tiền sản xuất từ ​​nhánh chính. Khi chúng tôi hoàn thành tính năng, chúng tôi triển khai một chi nhánh sản xuất từ ​​chi nhánh tiền sản xuất. Chi nhánh tiền sản xuất là giai đoạn trung gian. Và sau đó nhánh master kéo tất cả các thay đổi từ nhánh sản xuất.

Cách tiếp cận là tốt nếu chúng tôi muốn xem từng tính năng riêng biệt. Chúng tôi chỉ cần thanh toán trong chi nhánh những gì chúng tôi cần và xem xét.

Nhưng nếu chúng ta cần thể hiện công việc của mình, chúng tôi tạo chi nhánh phát hành có thẻ càng sớm càng tốt. Nếu sau này, chúng tôi sửa lỗi trong nhánh chính, chúng ta cần phải chọn chúng vào nhánh phát hành cuối cùng. Cuối cùng, chúng tôi có nhánh phát hành với các thẻ có thể giúp chúng tôi di chuyển giữa các phiên bản.

Tầm nhìn của tôi có đúng không? Sự khác biệt giữa kéo và chọn anh đào là gì?

Trả lời

10

Luồng GitLab cũng đề xuất sử dụng các chi tiết masterfeature. Khi tính năng được thực hiện, chúng tôi hợp nhất nó trở lại chi nhánh master. Phần này trông giống như trong Dòng GitHub. Sau đó, sự hiểu biết của tôi là họ cung cấp cho chúng tôi 2 tùy chọn về cách làm điều đó tùy thuộc vào việc ứng dụng SAAS hay ứng dụng di động (có thể được phát hành ra thế giới) hay không.

Nếu đây là ứng dụng SAAS, chúng tôi sử dụng các chi nhánh môi trường, ví dụ: pre-productionproduction. Các chi nhánh này được tạo ra từ master khi chúng tôi sẵn sàng triển khai ứng dụng của mình. Có các nhánh khác nhau cho mỗi môi trường cho phép chúng ta thiết lập công cụ CI/CD để tự động triển khai trên các cam kết được thực hiện cho các nhánh này. Nếu có vấn đề nghiêm trọng, chúng tôi sẽ khắc phục sự cố trong chi nhánh feature hoặc master rồi hợp nhất chi nhánh đó với chi nhánh environment.

Đối với các ứng dụng có thể được phát hành ra thế giới (ví dụ: ứng dụng dành cho thiết bị di động hoặc máy tính để bàn), tôi hiểu rằng họ đề xuất sử dụng mô hình khác nhau bằng cách sử dụng chi nhánh release thay vì các nhánh môi trường. Chúng tôi vẫn làm tất cả công việc trong các chi nhánh feature và hợp nhất chúng trở lại chi nhánh master sau khi hoàn thành. Sau đó, khi chúng tôi đảm bảo rằng chi nhánh master đủ ổn định tức là chúng tôi đã thực hiện tất cả thử nghiệm và sửa lỗi, chúng tôi tạo chi nhánh release và phát hành phần mềm của chúng tôi. Nếu có vấn đề nghiêm trọng, trước tiên chúng tôi sửa chữa nó trong chi nhánh master và chọn anh đào để sửa chữa chi nhánh release.

4

Đã một năm trôi qua kể từ khi bài đăng này được nâng lên, nhưng xem xét người đọc trong tương lai và thực tế mọi thứ đã thay đổi một chút, tôi nghĩ rằng nó đáng làm mới.

GitHub luồng như originally depicted by Scott Chacon in 2011 giả mỗi thay đổi một lần xem xét trên feature branch và sáp nhập vào master nên được triển khai vào sản xuất ngay lập tức. Trong khi điều này làm việc vào thời điểm đó và phù hợp với quy tắc Luồng GitHub duy nhất, là bất kỳ thứ gì trong nhánh chính có thể triển khai, it was quickly discovered để giữ master hồ sơ thực sự của mã sản xuất hoạt động triển khai thực tế cho sản xuất xảy ra từ số feature branchtrước khi hợp nhất thành master. Triển khai từ feature branch làm cho cảm giác hoàn hảo như trong trường hợp của bất kỳ vấn đề sản xuất có thể được ngay lập tức hoàn nguyên bằng cách triển khai master với nó. Vui lòng xem a short visual introduction để GitHub Flow.

Luồng GitLab là loại mở rộng cho luồng GitHub kèm theo bộ guidelines and best practices nhằm mục đích tiếp tục chuẩn hóa quy trình. Bên cạnh việc thúc đẩy sẵn sàng triển khai master chi nhánh và tính năng chi nhánh (giống như GitHub Flow) nó giới thiệu ba loại khác của chi nhánh:

  1. Production branch
  2. Environment branches: uat, pre-production, production
  3. Release branches: 1-5-stable, 1-6-stable

Tôi tin rằng tên và ví dụ ở trên là tự mô tả, do đó tôi sẽ không xây dựng furt cô ấy.

Các vấn đề liên quan