Về trường hợp với Bob và John, hệ thống hợp tác xã như svn không ngăn chặn kịch bản này nhiều hơn bất kỳ một hệ thống khóa không. Tôi có thể 'cập nhật' FooBar.java, đáp ứng svn rằng tôi có phiên bản mới nhất, sau đó xóa tệp đó cục bộ và ghi đè lên bằng bản sao cá nhân của riêng tôi mà không cần quan tâm đến phiên bản cơ sở và kiểm tra những thay đổi của người khác. Không có hệ thống, khóa hay không, ngăn chặn điều này, vì vậy tôi không thấy điểm thậm chí đưa nó vào cuộc tranh luận.
Vấn đề thực sự là quyết định những gì dư của bạn giữa
khả năng sai lầm merge vs bất tiện gây ra bởi những người khóa file
Quan điểm cho rằng hoặc là một khóa hoặc hệ thống không khóa là "vượt trội "là vô nghĩa.
Tôi đã sử dụng VSS, ở chế độ khóa toàn bộ mặc định của nó, với 6 nhà phát triển và nó hoạt động như một giấc mơ. Thỉnh thoảng, ai đó sẽ quên để giải phóng một khóa và chúng tôi sẽ phải săn chúng xuống hoặc phá vỡ khóa bằng tay và hợp nhất tay khi họ quay trở lại, nhưng điều này rất tối thiểu. Tôi đã nhìn thấy svn vít lên tự động hợp nhất nhiều hơn một lần, như vậy mà tôi không thực sự tin tưởng nó. Nó không phải lúc nào cũng gắn cờ một 'xung đột' khi hai người đã thay đổi cùng một tệp theo cách không thể tự động hợp nhất với nhau.
Ngược lại, tôi thấy mọi người mất kiên nhẫn với ổ khóa của VSS, chỉnh sửa các bản sao của riêng họ, và tò mò kiểm tra chúng ở phía trên mã của người khác, và tôi đã nhìn thấy svn một cách thủ công khi tôi vô tình thử để kiểm tra một cái gì đó trong đó đã được thay đổi bởi người khác kể từ lần cuối tôi kiểm tra nó ra.
Quan điểm của tôi là, đây không phải là một cuộc tranh luận hợp lý. Sự thành công của một trong hai hệ thống sẽ giảm xuống về cách bạn quản lý các điểm xung đột khi chúng xảy ra, không cho dù một hệ thống hoặc hệ thống kia tốt hơn.
"Nhà phát triển phần mềm luôn là người lạc quan - chỉ cần nhìn vào các vòng trượt ước tính của họ!" - Yêu nó!! – tjjjohnson