2008-08-04 53 views
54

Công ty của tôi đang sử dụng CVS làm tiêu chuẩn de facto của chúng tôi để kiểm soát nguồn. Tuy nhiên, tôi đã nghe rất nhiều người nói rằng SVN là tốt hơn.Ưu điểm của việc sử dụng SVN trên CVS là gì?

Tôi biết SVN mới hơn, nhưng khác hơn thế, tôi không quen với những lợi ích của nó.

Điều tôi đang tìm kiếm là một sự so sánh tốt, súc tích của hai hệ thống, lưu ý bất kỳ ưu điểm hay nhược điểm nào của mỗi hệ thống trong môi trường phát triển Java/Eclipse.

Trả lời

52

CVS chỉ theo dõi sửa đổi trên cơ sở từng tệp, trong khi SVN theo dõi toàn bộ cam kết dưới dạng bản sửa đổi mới, có nghĩa là dễ dàng theo dõi lịch sử dự án của bạn. Thêm một thực tế là tất cả các phần mềm điều khiển nguồn hiện đại sử dụng khái niệm sửa đổi để di chuyển dễ dàng hơn từ SVN hơn là từ CVS.

Ngoài ra còn có vấn đề cam kết nguyên tử. Trong khi tôi chỉ gặp phải nó một lần, có thể là 2 người cam kết cùng nhau trong CVS có thể xung đột nhau, mất một số dữ liệu và đưa khách hàng của bạn vào trạng thái không nhất quán. Khi phát hiện sớm, những vấn đề này không lớn vì dữ liệu của bạn vẫn còn ở đâu đó, nhưng nó có thể là một cơn đau trong một môi trường căng thẳng.

Và cuối cùng, không có nhiều công cụ được phát triển xung quanh CVS nữa. Trong khi các công cụ mới và sáng bóng như Git hay Mercurial chắc chắn thiếu các công cụ, SVN có một cơ sở ứng dụng khá lớn trên bất kỳ hệ thống nào.

EDIT 2015: Nghiêm túc, câu trả lời này hiện đã được 7 tuổi. Quên SVN đi, hãy dùng Git như mọi người khác!

+1

Tôi muốn câu trả lời tương tự cho git vs subversion và git vs mercurial –

18

Một trong nhiều so sánh:

http://wiki.scummvm.org/index.php/CVS_vs_SVN

Bây giờ đây là rất cụ thể cho dự án đó, nhưng rất nhiều apllies thứ nói chung.

Pro Subversion:

  • Hỗ trợ cho phiên bản đặt lại tên/di chuyển (không thể với CVS): Fingolfin, Ender
  • Hỗ trợ thư mục natively: Có thể để loại bỏ chúng, và chúng được phiên bản: Fingolfin, Ender
  • Thuộc tính tệp được phiên bản; không còn phải "bit thực thi" địa ngục: Fingolfin
  • revision number Nhìn chung làm cho xây dựng versioning và kiểm tra hồi quy dễ dàng hơn nhiều: Ender, Fingolfin
  • Atomic cam kết: Fingolfin
  • Intuitive (dựa trên thư mục) phân nhánh và gắn thẻ: Fingolfin
  • kịch bản móc dễ dàng hơn (trước/sau cam kết, vv): SumthinWicked (tôi sử dụng nó cho Doxygen sau khi cam kết)
  • Ngăn chặn tình cờ cam kết các tập tin mâu thuẫn: Mặn-ngựa, Fingolfin lệnh
  • Hỗ trợ tùy chỉnh 'diff': Fingolfin
  • diffs Offline, và họ ngay lập tức: SEV
+1

"Ngón tay" là gì? Googling từ đó làm cho nó chỉ khó hiểu hơn – DuKes0mE

+1

Fingolfin và Ender chỉ là tên của những người của diễn đàn đó: "Phía sau mỗi đối số" là một danh sách những người đồng ý rằng đối số cụ thể này là hợp lệ. ' – hinneLinks

7

Cuốn sách Subversion có an appendix rằng các chi tiết khác biệt quan trọng từ CVS, có thể giúp bạn đưa ra quyết định của bạn. Hai cách tiếp cận ít nhiều là giống nhau nhưng SVN được thiết kế đặc biệt để sửa chữa các sai sót tồn tại lâu dài trong CVS vì vậy, về lý thuyết ít nhất, SVN sẽ luôn là lựa chọn tốt hơn.

14

SVN có 3 ưu điểm chính trên CVS

  • nó nhanh hơn
  • hỗ trợ phiên bản của tập tin nhị phân
  • và thêm giao dịch cam kết (tất cả hoặc không có gì)
0

Bạn nên có một cái nhìn tại Git thay vì SVN. Đó là một DVCS rực rỡ và rất mạnh mẽ. Nó không thân thiện với người dùng như SVN, nhưng nó đang cải thiện về vấn đề đó, và nó không phải là rằng khó học.

+0

Bạn, sire, xứng đáng nhận được huy chương để bói toán. – altinturk

1

btw: CVSNT hỗ trợ cam kết nguyên tử

2

Tôi sẽ lần thứ hai Eridius' đề nghị của Git, nhưng tôi muốn mở rộng nó vào Ban TĐC huyện khác (Distributed Revision Control System) như Mercurialbazaar.

Những sản phẩm này khá gần đây và mức độ dụng cụ và tích hợp với chúng dường như thấp ở thời điểm này (dựa trên nghiên cứu ban đầu của tôi). Tôi muốn nói rằng họ là phù hợp nhất với các nhà phát triển điện ra khỏi đó (và trên đây ;-)).

Mặt khác, những gì không CVS hiện đang làm gì cho bạn? Từ câu hỏi ban đầu của bạn, bạn không thực sự có bất kỳ câu hỏi nào, "CVS hút vào điều này, tôi có thể sử dụng cái gì?"

Bạn phải cân nhắc chi phí của bất kỳ di chuyển tiềm năng nào đối với lợi ích. Đối với một dự án hiện có, tôi nghĩ rằng sẽ rất khó để biện minh.

4

Một điều không nên bỏ qua là hệ sinh thái. Tôi đã làm việc tại một cửa hàng CVSNT, và tôi đã tìm kiếm nhiều hơn và nhiều hơn nữa các công cụ mã nguồn mở được hỗ trợ SubVersion theo mặc định.

2

Là người đang chuyển đổi giữa CVS và SVN (ban đầu chúng tôi chuyển tất cả dự án của mình bằng cvs2svn và sau đó quyết định chuyển đổi bằng cách sử dụng svn trên dự án mới), đây là một số vấn đề đã có.

  • Sáp nhập và phân nhánh rất khác nhau, và nếu bạn chi nhánh và sáp nhập thường xuyên, trừ khi bạn có SVN 1.5 chạy trên máy chủ của bạn phải biết khi bạn phân nhánh (điều này không phải là rất rõ ràng trong các hộp thoại Rùa SVN). Michael nói việc phân nhánh và sáp nhập là trực quan, tôi cho rằng sau khi sử dụng CVS trong 10 năm, nó không phải là.
  • Nếu bạn đang chạy máy chủ SVN trên Linux, rất khó để SA của bạn chuyển sang svn 1.5, làm cài đặt mặc định 1.4.x.
  • Xung đột sáp nhập không gần như dễ dàng hoặc rõ ràng (ít nhất là đối với tôi và đồng nghiệp của tôi) trong TortoiseSVN vì nó nằm trong TortoiseCVS. Cách tiếp cận ba cửa sổ có một số nhận được sử dụng để và WinMerge (công cụ hợp nhất ưa thích của tôi) không làm một ba cửa sổ hợp nhất.
  • Hãy coi chừng: nhiều bài hướng dẫn trực tuyến và bài viết trên tạp chí tôi đã đọc rõ ràng không chi nhánh và hợp nhất, bạn nên thiết lập kho lưu trữ chính là https://svn.yoursvnserver.com/repos/YourProject/Trunk và các chi nhánh trên https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX. Bạn có thể làm sạch nếu bạn bắt đầu repos của bạn ở vị trí sai, nhưng nó dẫn đến sự nhầm lẫn.
0

bạn cũng có thể chọn chỉ di chuyển mã mới nhất từ ​​CVS sang SVN và cố định repo CVS hiện tại của bạn. điều này sẽ giúp việc di chuyển dễ dàng hơn và bạn cũng có thể tạo bản phát hành cũ của mình trong repo CVS cũ.

0

Vâng, một vài điều mà tôi cảm thấy làm cho svn tuyệt vời.

  1. Sự kết hợp giữa nồi nấu SVN-Altassian là một phương pháp tốt hơn nhiều so ý và kiểm tra chất lượng quản lý
  2. Better xung đột và hòa trộn
  3. Đó rõ ràng là nhanh hơn để chụp kiểm xuất, thực hiện các cam kết, vv
  4. Các vấn đề cam kết nguyên tử - Có thể 2 người cam kết cùng nhau trong CVS có thể xung đột nhau, mất một số dữ liệu và đặt cơ sở mã của bạn ở trạng thái không nhất quán

Migra tion có thể dễ dàng được thực hiện trong một vài giờ sử dụng cvs2svn.

Các vấn đề liên quan