Những lợi thế của hệ thống kiểm soát phiên bản phiên bản mỗi tệp riêng biệt là gì?


15

Trong vài năm qua tôi đã làm việc với một số hệ thống kiểm soát phiên bản khác nhau. Đối với tôi, một trong những khác biệt cơ bản giữa chúng là liệu chúng có phiên bản tệp riêng lẻ hay không (mỗi tệp có số phiên bản và lịch sử riêng) hoặc toàn bộ kho lưu trữ (một "cam kết" hoặc phiên bản thể hiện một ảnh chụp nhanh của toàn bộ kho lưu trữ) .

Một số hệ thống kiểm soát phiên bản "mỗi tệp":

  • CVS
  • ClearCase
  • Nguồn hình ảnh an toàn

Một số hệ thống kiểm soát phiên bản "toàn bộ kho":

  • SVN
  • Git
  • Không kiên định

Theo kinh nghiệm của tôi, các hệ thống kiểm soát phiên bản trên mỗi tệp chỉ dẫn đến sự cố và yêu cầu cấu hình và bảo trì nhiều hơn để sử dụng chính xác (ví dụ: "thông số cấu hình" trong ClearCase). Tôi đã có nhiều trường hợp đồng nghiệp thay đổi một tệp không liên quan và phá vỡ những gì lý tưởng sẽ là một dòng phát triển biệt lập.

Những lợi thế của các hệ thống kiểm soát phiên bản cho mỗi tập tin là gì? Các hệ thống kiểm soát phiên bản "toàn bộ kho" có vấn đề gì mà các hệ thống kiểm soát phiên bản trên mỗi tệp không gặp phải?


3
Tôi nghĩ rằng chủ yếu chỉ là lịch sử như vậy và hiện tại chúng tôi đang chuyển từ hệ thống hướng tệp sang hệ thống hướng thay đổi, nhưng từ quan điểm ngày nay, thật khó hiểu tại sao mọi người thậm chí đã thử cách tiếp cận trên mỗi tệp. Câu hỏi tuyệt vời!
blubb

Xin lỗi nếu câu hỏi này được đưa ra như là tranh luận. Đó là một sản phẩm của một số thất vọng gần đây.
Mike Daniels

1
@Mike Daniels: Nó không (ít nhất là với tôi) vì bạn rõ ràng yêu cầu những lợi thế.
blubb

Hai quan điểm này chỉ là những quy ước khác nhau. Bất kỳ cuộc tranh luận nào có lợi cho bên này chỉ làm tăng lập luận phản biện từ các đảng phái của phía bên kia. Chẳng hạn, nếu bạn muốn có hành vi "toàn bộ" trong Clearcase, bạn có thể tùy chỉnh thông số cấu hình của mình theo ngày.
mouviciel

SVN có một phiên bản cho mỗi tệp, hoặc điều đó cũng thay đổi trong phiên bản trước?
Klaim

Câu trả lời:


12

Theo kinh nghiệm của tôi, không có bất kỳ: VCS "toàn bộ kho" nào thống trị hoàn toàn VCS "trên mỗi tệp".


3

Mỗi tệp có một lợi thế khi bạn xây dựng các dòng sản phẩm (nhiều sản phẩm phần mềm) từ cùng một kho lưu trữ.

Một số môi trường hợp đồng của khách hàng yêu cầu bằng chứng cho thấy mã của họ CHỈ có những thay đổi họ muốn chứ không phải những thay đổi khác. Điều này là khá dễ dàng nếu số phiên bản tập tin vẫn giống nhau.

Và đây không phải là một ví dụ ngẫu nhiên tôi rút ra khỏi không khí mỏng.

Điều này xảy ra lần cuối cùng khi tôi gửi các bản cập nhật phần mềm cho quân đội Hoa Kỳ cho một hệ thống mà họ đã mua số lượng lớn từ chủ nhân trước đây của tôi. Giá trị đồng đô la của các hợp đồng được đo bằng hàng tỷ đô la (trở lại khi đô la Mỹ có giá trị hơn nhiều)

Vì vậy, nó sẽ giúp một số lần.

Điều kỳ lạ: nơi tôi làm việc bây giờ, chúng tôi cũng gửi cho mỗi khách hàng một giao hàng khác nhau .... (Và đó không phải là điều tôi quyết định, trong trường hợp bạn đang tự hỏi.)

Tôi nghi ngờ nó phổ biến hơn nhiều trong không gian quốc phòng / hàng không vũ trụ so với các ứng dụng web thu nhỏ hoặc ứng dụng web.


3
Nhưng một nhánh của toàn bộ kho lưu trữ tệp cũng sẽ đáp ứng các nhu cầu tương tự. Ví dụ: trong bzr, các nhánh hoàn toàn độc lập với dòng chính cho đến khi hợp nhất của bạn (hoặc chia sẻ một kho lưu trữ).
edA-qa mort-ora-y

1
Tôi không thể nghĩ đến một tình huống trong đó chi nhánh trong hệ thống 'toàn bộ kho' sẽ không thể hiện trạng thái cần thiết tốt hơn là dựa vào trạng thái bên ngoài với VCS để xác định tệp nào sẽ được sử dụng trong VCS "mỗi tệp". Công việc đầu tiên của tôi sau khi uni sử dụng RCS, một loạt các kịch bản để phiên bản dự án và một kịch bản cấp cao nhất để phiên bản các kịch bản phiên bản - một cơn ác mộng tuyệt đối, và vâng, đó cũng là cho một dự án quân sự. * 8 ')
Đánh dấu gian hàng

@Mark Gian hàng, khách hàng biết các tập tin đã thay đổi cho những gì họ muốn sửa. Vì vậy, kiểm toán cấu hình vật lý là theo số kiểm soát phiên bản
Tim Williscroft

Điều tôi đang nói là một phiên bản + một bản vá được kiểm toán yêu cầu thông tin khác nhau ở những nơi khác nhau, VCS và kiểm toán viên. Với một nhánh trong hệ thống 'toàn bộ kho', hai trạng thái đó được ghi lại dưới dạng các thực thể riêng biệt. Bây giờ, thông tin tương tự được sao chép giữa VCS và hệ thống kiểm toán và phải luôn khớp với nhau. gitthậm chí có thể phân biệt giữa tác giả và người đi làm, vì vậy bạn có thể giữ một kho lưu trữ 'đã được kiểm toán' nơi bạn biết cả người đã tạo ra bản vá (tác giả) và người đã kiểm tra nó (người đi làm). Cung cấp cho chúng tôi một tình huống mẫu mực và tôi sẽ đảo ngược -1 của tôi.
Đánh dấu gian hàng

@Mark gian hàng vá gì? họ biết phần mềm của họ là tập hợp các tệp A 1.01 B 1.05 D 1.55 E 1.44 F 1.01 và SVD cho phiên bản mà họ chấp nhận có thông tin thay đổi từng tệp, ví dụ E đã thay đổi để sửa lỗi 1104, phiên bản cũ 1.43, phiên bản mới 1.44 . Trời giúp chúng tôi nếu chúng tôi thay đổi F từ phiên bản 1.01. Tình hình còn phức tạp hơn vì có những lỗi thực tế đã được sửa, họ không muốn thay đổi. Những người này muốn tập hợp thay đổi tối thiểu, chỉ nhận một số tính năng được chọn từ một năm phát triển. Lựa chọn sửa lỗi hậu hoc.
Tim Williscroft

3

Không có bất kỳ lợi thế nào cho phiên bản trên mỗi tệp.

Mặt khác, nhược điểm là rất phong phú và rõ ràng.


0

Tôi có thể nói rằng các hệ thống kiểm soát phiên bản "mỗi tệp" không có bất kỳ lợi thế rõ ràng nào ngoài việc triển khai VCS. Các lập trình viên của VCS sẽ rất vui khi viết mã khi đó là phiên bản "trên mỗi tệp". Tôi đồng ý với quan điểm rằng, nó đã xuất hiện trong lịch sử.


0

Không có lợi thế về cách tiếp cận mỗi tệp khi bạn có các tệp liên quan. Đó là trường hợp phổ biến nhất trong cài đặt phát triển.

Trong một vài trường hợp đặc biệt - / etc hoặc. các tệp trong thư mục nhà của bạn trong Unix là tệp duy nhất tôi thường xuyên có - bạn đang xử lý (hầu hết) các tệp không liên quan. Và sau đó có một hệ thống khăng khăng giữ đồng bộ các thay đổi không liên quan có thể gây phiền toái.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.