Tôi có khoảng 20 kho lưu trữ khác nhau. Nhiều người độc lập và biên dịch như các thư viện nhưng một số khác lại có sự phụ thuộc trong số đó. Độ phân giải phụ thuộc và phân nhánh phức tạp.Thực hành tốt nhất cho nhiều kho lưu trữ git
Giả sử rằng tôi có siêu dự án chỉ tổng hợp tất cả các kho lưu trữ khác. Nó được sử dụng độc quyền để chạy thử nghiệm - không có phát triển thực sự nào ở đây.
/superproject [master, HEAD]
/a [master, HEAD]
/b [master, HEAD]
/c [master, HEAD]
/...
Bây giờ, để phát triển các tính năng hoặc sửa chữa cụ thể cho mỗi người (a
), đặc biệt là một trong những đòi hỏi phiên bản cụ thể của dự án để biên dịch hoặc chạy (b v2.0
và c 3.0
) Tôi có để tạo ra một chi nhánh mới:
/superproject [branch-a, HEAD] <-- branch for 'a' project
/a [master] <-- new commits here
/b [v2.0]
/c [v3.0]
Đối b
, nó có thể được yêu cầu cái gì khác, như a v0.9
và c v3.1
:
/superproject [branch-b, HEAD] <-- branch for 'b' project
/a [v0.9] <-- older version than 'a'
/b [master] <-- new commits go here
/c [v3.1] <-- newer version than 'a'
này càng trở nên phức tạp và phức tạp khi thực hiện công việc git chung liên quan đến các ngành chức năng, ngành hotfix, chi nhánh phát hành, vv Tôi được khuyên là nên (và khuyên chống lại) sử dụng git-submodules
, git-subtree
, của google git-repo
, git-slave
vv
Làm cách nào để quản lý tích hợp liên tục cho một dự án phức tạp như vậy?
EDIT
Câu hỏi thực sự là làm thế nào để chạy thử nghiệm mà không cần phải thử tất cả các dự án phụ thuộc khác? Đặc biệt là khi tất cả các dự án có thể sử dụng các phiên bản khác nhau. Trigger Jenkins tests after commits in git submodules
Tôi thực sự sẽ không khuyến khích một kiến trúc như vậy. Việc có một kho lưu trữ như thế sẽ chỉ gây nhầm lẫn cho các nhà bảo trì và việc thử nghiệm thực sự nên được thực hiện cho mỗi dự án. – Makoto
Các thư mục riêng lẻ ở trên là các kho .git khác nhau, chứ không phải là một tệp lớn duy nhất - nếu không chúng không thể có các nhánh và thẻ khác nhau. – AlBlue
Câu hỏi thực sự là làm thế nào để chạy thử nghiệm mà không cần phải giả lập tất cả các dự án phụ thuộc khác? Đặc biệt là khi tất cả các dự án có thể sử dụng các phiên bản khác nhau. – betodelrio