Điều gì làm cho chu kỳ phát hành phần mềm ngắn hơn với DVCS, so với CVCS?
Tôi đồng ý với Bart rằng lý do chính là mô hình phân nhánh được sử dụng, nhưng loại hệ thống kiểm soát phiên bản ảnh hưởng trực tiếp đến mô hình phân nhánh nào khả thi. Vì vậy, chúng tôi có hai câu hỏi phụ. Mô hình phân nhánh nào mà các hệ thống phân tán hỗ trợ tốt hơn và tại sao nó làm cho chu kỳ phát hành nhanh hơn?
Sự khác biệt cơ bản giữa kiểm soát phiên bản tập trung và phân tán là, nếu không có cơ quan trung ương, bạn không thể thực thi dòng thời gian tuyến tính. Vì vậy, để có thể kiểm soát phiên bản phân tán, các hệ thống này nhất thiết phải xác định lịch sử là biểu đồ chu kỳ có hướng, trong đó mỗi phiên bản chỉ đơn giản là có định danh duy nhất, một hoặc nhiều bản sửa đổi cha mẹ và có thể có nhiều bản sửa đổi con mà bạn có thể không biết, bởi vì bạn chưa đồng bộ hóa với hệ thống nơi chúng được tạo.
Nó chỉ ra rằng phương pháp này cho vay rất tốt để phân nhánh. Bạn không cần phải làm bất cứ điều gì để có được một chi nhánh, bạn chỉ cần luôn có một chi nhánh. Vì vậy, bạn có thể lặn thẳng để làm việc đầu tiên và quyết định khi nào và ở đâu để hợp nhất nó hoặc thậm chí là giữ nó ở đâu và dưới tên nào cho đến khi bạn biết liệu nó có thực sự đi theo cách bạn cần hay không.
Ngược lại, tất cả các hệ thống tập trung duy trì lịch sử như một tập hợp các nhánh với chuỗi sửa đổi tuyến tính. Vì vậy, bạn phải quyết định trước liệu bạn có cần một chi nhánh hay không, đặt tên cho nó và tạo ra nó một cách rõ ràng. Điều này khá đau ở mông khi bạn chưa biết ý tưởng đó có giá trị gì và bạn thường đơn giản là không biết điều đó trước khi bắt đầu lập trình. Bị ảnh hưởng bởi thực tế là trong hầu hết các hệ thống tập trung, tên chi nhánh là toàn cầu, quan trọng, thường tồn tại và không dễ dàng thay đổi, trong khi trong tất cả các hệ thống phân tán chính, chúng chỉ là các biệt danh cục bộ có thể thay đổi bất cứ lúc nào và được tái chế tự do. Và thực tế, tất cả các hoạt động phân nhánh và hợp nhất thường chậm hơn một chút trong CVCS.
Do đó, DVCS làm cho các chi nhánh dễ dàng hơn và do đó các nhóm sử dụng các chi nhánh DVCS mọi lúc trong khi các nhóm sử dụng CVCS sẽ tránh chúng hầu hết thời gian.
Bây giờ tại sao sử dụng các chi nhánh cho phép phát hành thường xuyên hơn? Vâng, mọi đội sẽ đánh giá thấp một nhiệm vụ ngay bây giờ và sau đó, thường là khi khó theo dõi lỗi xuất hiện. Các nhóm sử dụng các hệ thống tập trung thường thực hiện tất cả việc gỡ lỗi và hầu hết sự phát triển trên thân cây, vì các nhánh rất bất tiện. Vì vậy, họ không thể phát hành cho đến khi họ loại bỏ hầu hết các lỗi và họ phải xen kẽ các giai đoạn phát triển và gỡ lỗi.
Ngược lại trong các hệ thống phân tán, nơi tất cả các công việc được thực hiện trên các nhánh, chúng có thể được hợp nhất với nhau để kiểm tra, thử nghiệm, sửa lỗi và chỉ công việc vượt qua các thử nghiệm được hợp nhất riêng với thân cây. Kết quả là trong thân cây có rất ít lỗi và do đó có thể được phát hành thường xuyên hơn, thường là bất cứ khi nào một tính năng quan trọng hạ cánh.
Nó cũng giúp rằng bất cứ khi nào có sự thay đổi về các ưu tiên, công việc đang tiến hành có thể được tạm gác một cách tầm thường với phương pháp phân nhánh được sử dụng với các hệ thống phân tán. Trong hầu hết các dự án thực tế, những thay đổi trong các ưu tiên luôn luôn xảy ra.