Giả sử chúng ta có cấu trúc kho sau trên github:một công việc tốt cho dĩa submodule là gì
company:project.git
\- company:submodule.git
Một nhà phát triển trong dĩa công ty của tôi dự án công ty, làm cho không gian làm việc của mình trông như thế này:
developer:project.git
\- company:submodule.git
Điều này là tốt cho 90% nhà phát triển vì chúng không thay đổi thư viện con, chúng chỉ hoạt động trong dự án. Bây giờ giả sử có một tính năng mới yêu cầu cải tiến trong mô-đun con. Các nhà phát triển buộc tội này chuyển đổi không gian làm việc của mình như thế này:
developer:project.git
\- developer:submodule.git
Bắt đó không phải là tầm thường như anh ta cần phải thay thế một submdule với submodule khác (để git, bản gốc và ngã ba của submodule là hai việc khác nhau) .
Nếu nhà phát triển này hoạt động trên thư viện lâu hơn một chút, anh ấy cam kết cấu trúc này với nhánh chính của anh ấy, vì vậy nĩa của anh ấy trên github luôn sử dụng bảng con được chia nhỏ.
Khi anh ấy sẵn sàng phát triển, anh ấy sẽ tạo yêu cầu kéo. Vấn đề là khi sáp nhập theo yêu cầu kéo kho chính sẽ trông như thế này:
company:project.git
\- developer:submodule.git
Đây là vấn đề như bây giờ mỗi nhà phát triển theo dõi các chi nhánh công ty sẽ kết thúc với submodule của nhà phát triển.
Để khắc phục sự cố, trước khi nhà phát triển đưa ra yêu cầu kéo, nhánh chính của anh ấy phải được chuyển về công ty: submodule.git - điều này rất khó xử, đặc biệt là vì anh ấy luôn muốn làm việc nhà phát triển: submodule.git.
Chúng tôi đã thử một số quy trình công việc và vấn đề ở trên là vấn đề duy nhất mà chúng tôi chưa có quy trình làm việc tốt.
Luồng công việc lạ này. Tại sao bạn sẽ có dĩa trong các mô-đun và không phải trong các chi nhánh? –
cành và nhánh là 2 thứ riêng biệt. Chúng tôi sử dụng dĩa - người duy trì dự án kéo các yêu cầu kéo từ các nhánh của nhà phát triển. Yêu cầu kéo được xem xét mã. Với dĩa, chúng tôi chỉ phải cung cấp quyền truy cập chỉ đọc vào các kho lưu trữ chính, đây là cách tuyệt vời để giữ nguyên kho lưu trữ chính. Các mô-đun con được thiết kế cho mã reuese, chúng bao gồm các thư viện (của chúng tôi và của bên thứ ba libs) được tái sử dụng giữa các dự án. –
Vâng có ý nghĩa. Tôi sẽ đặt mỗi dự án vào một repo git riêng biệt (không phải là một module), nhưng tôi đoán, đó chỉ là sở thích cá nhân. –