Một kịch bản phổ biến là cơ sở mã của sản phẩm được lưu trữ trong kho lưu trữ trong một số hệ thống VCS phát triển đến điểm mà cơ sở mã hóa có thể được coi là có chứa một số sản phẩm. Việc phân tách cơ sở mã trên một số kho lưu trữ VCS, mỗi kho dành riêng cho một sản phẩm, có thể tận dụng một số lợi ích (xem Lợi ích của việc có một sản phẩm trên mỗi kho lưu trữ VCS qua mô hình kho lưu trữ bên dưới). Về mặt kỹ thuật, tách codebase là một bước khá dễ dàng vì hầu hết các VCS đều hỗ trợ thao tác này. Tuy nhiên, sự phân chia có thể làm tăng các vấn đề kỹ thuật liên quan đến thử nghiệm tự động, phân phối liên tục, tích hợp hoặc giám sát dịch vụ (xem Các vấn đề được đưa ra bởi sự phân tách.) Các tổ chức có kế hoạch thực hiện việc phân chia như vậy do đó cần biết cách thực hiện quá trình chuyển đổi này một cách trơn tru nhất có thể, nghĩa là, không làm gián đoạn đường ống phân phối và giám sát của họ. Bước đầu tiên của điều này có lẽ là để hiểu rõ hơn về khái niệm dự án và làm thế nào để phân định sự phân chia trong một cơ sở mã nguyên khối.
Trong câu trả lời cho câu hỏi này, tôi muốn xem:
Một nỗ lực để đưa ra một định nghĩa làm việc về sản phẩm là gì, đưa ra các tiêu chí thực tế để phân định các sản phẩm thực sự trong một cơ sở mã hiện có.
Theo định nghĩa làm việc này, xây dựng một kế hoạch thực sự phân chia. Chúng ta có thể làm cho các giả định đơn giản hóa mà codebase được xử lý bởi một hoàn toàn tự động SDLC thực hiện liên tục hội nhập và liên tục giao hàng . Đó là, mỗi nhánh được xác nhận bởi một testsuite tự động được triển khai trong cơ sở mã hiện tại và mỗi hợp nhất với một số nhánh ma thuật của Cameron tạo ra các sản phẩm tạo tác phẩm được thử nghiệm và triển khai. ( Các vật phẩm của sản phẩm là ví dụ tarball nguồn, tài liệu, gói phần mềm nhị phân, hình ảnh Docker , AMI, unikernels.)
Kế hoạch như vậy là thỏa mãn nếu nó giải thích làm thế nào để phá vỡ
Các vấn đề được đưa ra bởi sự phân chia
Làm thế nào các thủ tục kiểm tra tự động liên quan đến kho lưu trữ nguyên khối có sẵn và các kho lưu trữ phân chia?
Làm thế nào các quy trình triển khai tự động liên quan đến kho lưu trữ nguyên khối có sẵn và các kho lưu trữ phân chia?
Trường hợp được lưu trữ mã cho các thủ tục triển khai tự động?
Cơ sở hạ tầng được lưu trữ , giám sát và chiến lược sẵn sàng cao ở đâu?
Làm thế nào để đảm bảo rằng nhà phát triển chỉ cần một cơ sở mã hóa tại một thời điểm (nhưng có thể sử dụng các vật phẩm từ các cơ sở mã khác).
Làm thế nào một công cụ như git-bisect
Lưu ý cận biên: Lợi ích của việc có một sản phẩm trên kho lưu trữ VCS so với mô hình kho lưu trữ phình to
Có một số kho lưu trữ nhỏ đang giữ codebase cho một sản phẩm cụ thể có những ưu điểm sau so với cách tiếp cận kho lưu trữ bloat của Blond:
Với một kho lưu trữ phình to, thật khó để lấy lại một bản phát hành khi một sản phẩm không ổn định, bởi vì lịch sử được trộn lẫn với lịch sử sản phẩm khác.
Với một kho lưu trữ phình to, thật khó để xem lại lịch sử dự án hoặc kéo, với các kho lưu trữ nhỏ, chúng tôi có nhiều khả năng đọc thông tin này. (Điều này có thể dành riêng cho VCS như git, không giống như svn, chúng tôi không thể kiểm tra các cây con!)
Với một kho lưu trữ phình to, chúng ta phải nhảy nhánh nhiều hơn khi chúng ta phát triển. Nếu chúng ta có kho lưu trữ N, chúng ta có thể làm việc song song trên N nhánh, nếu chúng ta chỉ có 1 kho lưu trữ, chúng ta chỉ có thể làm việc trên một nhánh hoặc có vô số bản sao làm việc cũng gây rắc rối.
Với một số kho lưu trữ nhỏ, các bản ghi đưa ra một bản đồ nhiệt của dự án. Chúng thậm chí có thể được sử dụng như một ủy quyền phổ biến kiến thức trong nhóm nhà phát triển: nếu tôi không tham gia repo X từ 3 tháng, thì việc giao cho tôi trong một nhóm làm việc trên repo X là điều tốt để tôi biết về sự phát triển trong thành phần đó.
Với các kho lưu trữ nhỏ, sẽ dễ dàng có được một cái nhìn tổng quan rõ ràng về một thành phần. Nếu mọi thứ đi vào một kho lưu trữ lớn duy nhất, không có vật phẩm hữu hình nào phân định rõ từng thành phần và cơ sở mã có thể dễ dàng trôi về phía quả bóng bùn lớn .
Các kho nhỏ buộc chúng ta phải làm việc trên các giao diện giữa các thành phần. Nhưng vì chúng tôi muốn có một viên nang tốt, dù sao đây cũng là công việc chúng tôi nên làm, vì vậy tôi sẽ coi đây là một lợi thế cho các kho lưu trữ nhỏ.
Với một vài kho lưu trữ nhỏ, việc có nhiều chủ sở hữu sản phẩm sẽ dễ dàng hơn.
Với một số kho lưu trữ nhỏ, việc có các tiêu chuẩn mã đơn giản phù hợp với kho lưu trữ đầy đủ sẽ dễ dàng hơn và có thể được xác minh tự động.