Quy trình làm việc Git cho các nhóm nhỏ


11

Tôi đang làm việc trên một quy trình công việc git để thực hiện trong một nhóm nhỏ. Các ý tưởng cốt lõi trong quy trình làm việc:

  • Có một chủ dự án được chia sẻ mà tất cả các thành viên trong nhóm có thể viết thư cho
  • Tất cả sự phát triển được thực hiện riêng trên các nhánh tính năng
  • Các nhánh tính năng là mã được xem xét bởi một thành viên trong nhóm không phải là tác giả của chi nhánh
  • Nhánh tính năng cuối cùng được hợp nhất vào tổng thể chung và chu trình bắt đầu lại

Bài viết giải thích các bước trong chu trình này một cách chi tiết:

https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/ch CHƯƠNG05.md

Điều này có ý nghĩa hay tôi đang thiếu một cái gì đó?

Câu trả lời:


16

Tôi thích mô hình phân nhánh dòng chảy git . Chi nhánh chính hầu hết thời gian, nó chỉ chứa các bản phát hành. Nhánh phát triển phải ổn định mọi lúc và các nhánh tính năng có thể bị phá vỡ.

Bạn cũng có thể kết hợp điều này với tích hợp liên tục bằng cách hợp nhất phát triển thành nhánh tính năng và nhánh tính năng của bạn để phát triển. Tất nhiên, bạn chỉ nên hợp nhất một cái gì đó để phát triển khi bạn tự tin rằng mọi thứ đang hoạt động và không bị phá vỡ.


Theo tôi hiểu, git Flow và tích hợp liên tục là những cách làm việc khác và không thể thực sự kết hợp được. Trong luồng git, mã được hợp nhất để phát triển chỉ khi một tính năng hoàn tất. Trong tích hợp liên tục, tất cả các mã được hợp nhất vào một nhánh được chia sẻ ít nhất một lần mỗi ngày, ngay cả khi nó không cung cấp bất kỳ tính năng mới nào ngay lập tức.
bdsl

7

Tôi nghĩ rằng bạn đang thiếu chủ đề Tích hợp liên tục. Nó nên là một phần của mọi thiết lập phát triển.

Với các nhánh tính năng bạn gặp vấn đề, rằng bạn không tích hợp liên tục, nhưng chỉ sau khi một tính năng được hoàn thành.

Nếu tính năng phân nhánh là ngắn ngủi, điều này có thể được chấp nhận, nhưng nó chắc chắn là thứ mà người ta nên xem xét.

Một lựa chọn khác là thiết lập các bản dựng CI cho từng nhánh tính năng. Điều này chắc chắn sẽ giúp, nhưng nó không tích hợp. Điều này trở nên rõ ràng khi bạn tìm thấy lỗi đầu tiên không xuất hiện trong Tính năng A cũng như Tính năng B, nhưng tại thời điểm bạn tích hợp Tính năng A & B

Một cách khác thứ ba là thực hiện sáp nhập trong một số nhánh tích hợp của bản dựng CI. Đây là sự tích hợp thực sự và thực sự hoạt động khá tốt với git nếu công việc có phần tách biệt, nhưng gây ra xung đột hợp nhất trong quá trình xây dựng dẫn đến việc xây dựng thất bại.


Nhánh chính có thể được nối với một CI để từ chối hợp nhất nhánh tính năng nếu chúng không thực hiện các thử nghiệm không hồi quy tự động. Cảm ơn vì tiền boa, tôi sẽ thêm phần "Mẹo" ở cuối và đề cập đến phần này ở đó.
janos

1
Chắc chắn, nhưng như đã nói, đây không phải là sự tích hợp liên tục mà là sự tích hợp cuối cùng của một tính năng có thể gây khó chịu, nhưng không giống nhau
Jens Schauder

1
Tôi nghĩ rằng các nhánh tính năng rất hữu ích, vì chúng không cần phải ổn định. Điều đó có nghĩa là bạn có thể cam kết thường xuyên thay vì có một cam kết lớn.
Arjan

Một quy trình xây dựng tự động chạy theo lịch trình (hệ thống CI) là không thể thiếu. Nó cần phải chạy thường xuyên để các vấn đề biên dịch có thể được tìm thấy và khắc phục nhanh chóng. Đội ngũ phát triển nên ưu tiên xây dựng thất bại. Dễ dàng hơn nhiều để khắc phục các loại vấn đề này khi chúng lần đầu tiên xuất hiện.
Nathan Pilling

1
Đối với các dự án sử dụng CI (hiện tại chúng tôi có một vài dự án cũ không thể sử dụng nó), chúng tôi cam kết MỌI THỨ để làm chủ cho CI thực sự, đối với các dự án kế thừa của chúng tôi, chúng tôi sử dụng mô hình phân nhánh dòng chảy git. Các nhánh tính năng là một trình chặn CI nếu bạn hỏi tôi, chúng làm cho việc TIẾP TỤC (không chỉ khi kết thúc) khó khăn hơn. Chúng tôi tiếp tục làm việc trên các tính năng và nhiệm vụ cuối cùng là bật nó về cơ bản, nhưng mã luôn nằm trong dự án.
Elliot Blackburn

1

Bạn có thể lấy cảm hứng từ gitflow hoặc Twgit .

gitflow tóm tắt cách tiếp cận của nó là:

Các tiện ích mở rộng Git để cung cấp các hoạt động kho lưu trữ cấp cao cho mô hình phân nhánh của Vincent Driessen.

Twgit mô tả chính nó như sau:

Twgit là một công cụ hỗ trợ mã nguồn mở và miễn phí để quản lý các tính năng, hotfix và phát hành trên kho Git. Nó cung cấp các lệnh đơn giản, mức cao để áp dụng mô hình phân nhánh được mô tả trong tài liệu của chúng tôi. Hệ điều hành được hỗ trợ: Debian / Ubuntu Linux, Mac OS X.

Cả hai công cụ đều có sẵn từ github .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.