2010-07-09 31 views
22

Bản sao có thể xảy ra:
Why is git better than Subversion?Tại sao sử dụng SVN? Bất kỳ ưu điểm ẩn (trên GIT/Mercurial/Bazaar) có?

Tôi đã đọc rất nhiều (không đủ để có được hình ảnh hoàn hảo mặc dù) về hệ thống versioning, và kết luận rõ ràng là chỉ đơn giản là GIT tốt nhất. Hoặc Bazaar có thể. Hoặc Mercurial. Nhưng nếu đúng như vậy, thì không ai sẽ sử dụng SVN, nhưng họ vẫn làm. Tại sao? Bản thân tôi không có ý kiến ​​riêng về v.c.s. nói chung là tốt nhất vì thiếu kinh nghiệm với họ. Bạn có thể chia sẻ suy nghĩ của bạn?

+0

Đó * "GIT chỉ đơn giản là tốt nhất" * không giống như một kết luận rõ ràng nào cả. Nó giống như một ý kiến ​​thiên vị nặng nề hơn. Và bạn mâu thuẫn với chính mình rồi nói * "Bản thân tôi không có ý kiến ​​riêng về những gì v.c.s. nói chung là tốt nhất" *. WTF là bạn đang cố gắng nói không? – Juliano

+1

Kiểm tra [Tại sao GIT tốt hơn Subversion?] (Http://stackoverflow.com/questions/871/why-is-git-better-than-subversion). Nó có gần 200 phiếu. – DOK

+10

@Juliano: Đi dễ dàng, anh bạn. Tôi nghĩ những gì anh ta nói, là dựa trên những gì anh ta đọc trong văn học, có vẻ như Git là một dunk slam, nhưng anh ta không có kinh nghiệm thực tế để xây dựng ý kiến ​​riêng của mình. –

Trả lời

5

Mọi người vẫn đang sử dụng Subversion bởi vì nó được thiết kế sử dụng mô hình đầu tiên đến cho các hệ thống kiểm soát phiên bản (tập trung). Việc chuyển sang phân phối (và thay đổi dựa trên phiên bản) có thể mất một thời gian để làm quen với (như bạn có thể thấy trong Joel's experience) và rất nhiều nhóm quyết định không sử dụng nó do khả năng chống thay đổi.

Dụng cụ Mercurial khá trưởng thành, so sánh với SVN theo ý kiến ​​của tôi.

+3

Subversion là không phải là người đầu tiên đến . Mô hình này được kế thừa từ CVS, đã triển khai mô hình máy khách-máy chủ. Trước đó có mô hình kho lưu trữ chia sẻ cục bộ SCCS và RCS. – Juliano

+3

Mô hình đó vẫn được tập trung. –

+2

@Juliano, SVN và CVS làm theo các mô hình tương tự, vì vậy của CVS không thể đến trước ... Tập trung VC không thể đến trước trung VC SVN của ... – tobyodavies

13

SVN được thành lập và trưởng thành, với công cụ không kém phần trưởng thành.

3

Trong khi svn được thiết lập/trưởng thành, tôi phải thừa nhận, Kenji Kina là đúng: nó sống trong quá khứ với một mô hình kiểm soát phiên bản đã lỗi thời. Tôi đã chỉ sử dụng svn, nhưng sau khi đọc/xem Linus và Joel nói về DVCS, nó âm thanh như một ý tưởng tuyệt vời. Tôi nghĩ Perforce làm điều tương tự.

Điều này không có nghĩa là svn là xấu (nó hoạt động khá tốt!), Nhưng nó dễ dàng hơn để quản lý mã của bạn và có cam kết thường xuyên hơn với DVCS. Bởi vì nếu bạn phá vỡ một cái gì đó, nó dễ dàng để hoàn tác. Nếu bạn chi nhánh, nó dễ dàng để hợp nhất. Nói chung, họ đã khắc phục được rất nhiều cơn đau đầu lớn nhất với Subversion.

Nếu bạn chưa bao giờ sử dụng hệ thống kiểm soát phiên bản khác trước đây và tự làm quen với việc tự triển khai và viết mã (chứ không phải tài liệu hoặc hình ảnh hoặc những thứ bạn không cần văn bản/phân biệt) một ưu tiên và nhìn vào DVCS. Sau đó, bạn sẽ không cần phải là re-educated.

+0

... Tôi đã thấy rất nhiều tài liệu tiếp thị cho những sản phẩm thực sự nghèo nàn, tôi không bao giờ tin vào sự cường điệu nữa - chỉ sau khi tôi đã thực sự sử dụng một cái gì đó và hiểu được những điểm yếu của nó. DVCS là tốt, nhưng giải quyết các vấn đề khác nhau cho CVCS và không phải lúc nào cũng phù hợp. – gbjbaanb

+0

@gbjbaanb - Điều đó có thể đúng. Tôi chỉ có sự ghen tị của VCS. :) lol –

6

Subversion có lợi thế khi một kho lưu trữ chứa nhiều dữ liệu nhị phân, không nén đồng bằng tốt. Một thanh toán Subversion lấy đầu chỉ, nhưng git nhái toàn bộ lịch sử, có thể nặng tới nhiều gigabyte. Có, điều này là tốt đẹp cho chế độ máy bay, nhưng lấy bản sao ban đầu có thể mất nhiều giờ.

+2

Nếu bạn không muốn lấy tất cả lịch sử trước đó của kho lưu trữ git, bạn có thể tạo bản sao nông (với 'git clone --depth = $ depth'). Bạn không thể sử dụng bản sao không hoàn chỉnh này để nhân bản, đẩy/kéo, v.v., nhưng nó đủ để có thể chỉnh sửa với kiểm soát sửa đổi cục bộ và gửi các cam kết này như là các bản vá cho sự bao gồm thượng nguồn. – Vineet

+7

Không có khả năng đẩy hoặc kéo làm cho tính năng gần như vô giá trị đối với tất cả các môi trường tôi đã làm việc. Không ai muốn gửi bản vá lỗi bằng tay hoặc đối phó với việc cố gắng đối chiếu tất cả chúng. – Zed

+0

@Zed, Nó không cần phải được thực hiện bằng tay. Không thể có một công cụ để làm điều đó? – Pacerier

10

Ngoài những thứ khác mà mọi người đang đề cập, (số lượng lớn dữ liệu nhị phân, trưởng thành, ổn định, v.v.) là svn được xây dựng trên mô hình phân cấp cổ điển về cơ bản khác với bản sửa đổi bản vá/thay đổi.

Công ty chúng tôi đã quyết định ở lại với SVN vì mô hình này phù hợp với cách chúng tôi xử lý chu kỳ phát hành và phân nhánh của chúng tôi. Chúng tôi thấy sự tiến triển trực tiếp của các phiên bản như một lợi ích, không phải là một lệnh cấm. Các bản cập nhật được đẩy đến một kho lưu trữ tập trung, và một số sửa đổi nhất định được coi là "ổn định" được kiểm tra ra môi trường sống. Bất cứ lúc nào, nó là ngay lập tức rõ ràng những gì nhà nước của mỗi môi trường là tất cả tham gia. (vâng, điều này là có thể với git.) Ngay cả những người quản lý không biết gì về kiểm soát sửa đổi hoặc phát triển phần mềm có thể nói: "Chúng tôi thích cách bạn có nó khi nó ở phiên bản 2547". Mặt khác, tôi nên đề cập rằng tôi sử dụng darcs và git cho các dự án mà tôi và bạn bè và đồng nghiệp của tôi làm việc cùng nhau, vì mô hình phân phối dựa trên bản vá hoạt động cho chúng tôi.Chúng ta có thể ad-hoc di chuyển qua dòng thời gian của dự án và chọn tất cả các loại thay đổi.

Thực sự lợi thế của SVN, công ty của tôi, là hệ thống phân cấp mạnh mẽ và khả năng truy cập tới những người không lập trình đã quen với khái niệm "đăng nhập" và "tải xuống".

35

Tôi hiện đang duy trì dịch vụ kiểm soát phiên bản cho một tổ chức nghiên cứu của Hoa Kỳ. Chúng tôi không chỉ hỗ trợ SVN ngoài Git và Mercurial, mà còn hỗ trợ CVS.

"Tính năng sát thủ" của SVN trong số người dùng của chúng tôi là các bản sao thu hẹp. Bạn có thể thực hiện thanh toán chỉ một thư mục con sâu trong chế độ thừa kế, chỉ tải xuống các tệp có liên quan đến thư mục đó và vẫn có thể thực hiện các cam kết. Git gần đây đã đưa ra một biến thể tương tự nhưng không hoàn toàn hữu ích về tính năng này được gọi là các lần kiểm tra thưa thớt (xem thêm Sparse checkout in Git 1.7.0?). Điều này cho phép bạn lọc cây làm việc của mình, nhưng vẫn buộc bạn tải xuống toàn bộ lịch sử của toàn bộ dự án, điều này có thể bị cấm ngay cả khi các tệp nhị phân lớn không phải là có liên quan. Tâm trí bạn, đĩa là rẻ, và nếu bạn hấp thụ cú đánh của bản sao ban đầu trong các lần kéo tiếp theo là đủ nhanh, nhưng điều này không giúp mọi người đi trên chuyến đi trước khi họ nhận ra họ cần sao chép, và trong mọi trường hợp thậm chí Kiểm tra thưa thớt của Git sẽ không cho phép bạn bắt đầu cây làm việc của bạn năm cấp độ xuống, do đó, nó trông hơi xấu xí. Ngoài ra, người dùng tìm thấy authz tệp dễ viết hơn Git commit hooks, thoải mái hơn với cú pháp SVN và phương pháp hơn bất kỳ DVCS nào, và có lẽ quan trọng nhất là tất cả, đã có hàng nghìn giá trị commit trong lịch sử SVN. Các thí nghiệm trong việc di chuyển các kho lưu trữ Subversion lớn sang Git hoặc Mercurial đã cung cấp kết quả hỗn hợp, và đây là những nhà khoa học đang cố gắng hoàn thành công việc của mình, không dành thời gian để phát triển DVCS.

CVS vẫn có lý do tương tự. Hãy tưởng tượng, với tư cách là người dùng Git, có kiểm tra thưa thớt cũng cho phép bạn tùy ý remap nơi tệp trong nhánh hiển thị trong cây đang hoạt động của bạn, sử dụng định dạng được phiên bản cùng với kho lưu trữ và được phân phối với mọi lần kéo thông thường, cho phép bạn để viết các định nghĩa có thể có các nhóm có thể bao gồm các nhóm khác và chỉ kéo các tệp cần thiết để sắp xếp hệ thống tệp trên bản sao. Đó là đơn giản trong các mô-đun CVS, và không thể trong mọi DVCS. Đối với tất cả các tội lỗi của CVS (và tin tôi, chúng tôi khá ý thức về chúng, và đi theo cách của chúng tôi để ngăn cản các dự án CVS mới trừ khi họ hoàn toàn không thể sống mà không có mô-đun), không thể thuyết phục một nhóm sử dụng tính năng đó để di chuyển sang hệ thống kiểm soát phiên bản khác.

Phần mềm DVCS đã mang lại một số cải tiến tuyệt vời, nhưng chúng cũng thiếu những thứ mà một số nhà phát triển đã cho phép. Hãy chắc chắn rằng bạn biết trước những yêu cầu của bạn là gì trước khi chọn một.

+1

SVN "nhái hẹp" được gọi là "thư mục thưa thớt" hoặc đôi khi là "các lần kiểm tra cạn". Một tính năng tuyệt vời của nó. – gbjbaanb

+2

Việc di chuyển hàng ngàn cam kết từ hệ thống A sang hệ thống B luôn luôn khó khăn. Đây là một đối số chống lại các hệ thống chuyển đổi, không phải là một đối số chống lại DVCS. – JesperE

+6

Chắc chắn, nhưng không ai yêu cầu tranh luận chống lại DVCS. Câu hỏi là, tại sao bạn sẽ sử dụng SVN, và một lý do hoàn toàn hợp lệ là có rất nhiều lịch sử SVN. – Zed

16

Nói về công ty tôi làm việc - lý do lớn nhất để sử dụng SVN là có thể giữ các định dạng lớn, độc quyền, tệp nhị phân trong điều khiển phiên bản. Cụ thể, thư viện của hàng ngàn tệp CAD. Trong trường hợp này, nó không có ý nghĩa để có VCS dựa trên tệp như SVN, thay vì dựa trên thông tin văn bản như Git.

Đặt sang một bên cho dù bạn có thể thực hiện "kiểm xuất" với Git hay không hoặc lưu trữ dữ liệu nhị phân như thế nào, thực tế là được thiết kế để theo dõi dòng thông tin văn bản nổi xung quanh cây mã nguồn. Cũng như nó thực hiện điều này, mô hình đó không phù hợp với việc theo dõi các thư viện dữ liệu nhị phân.

Thành thực mà nói, mặc dù đó là về lý do vững chắc duy nhất tôi muốn giới thiệu nó: P

+0

Đây là lý do chính đáng. Subversion cũng có kiểm tra cạn. Quan trọng đối với các kho lưu trữ nhị phân lớn. –

+1

Đây thực sự là lý do kỹ thuật tốt duy nhất làm cho rất nhiều nhà phát triển trò chơi ở lại Git và Mercurial ít nhất cho các tệp nghệ thuật. Thật vậy, làm việc với các tệp nghệ thuật ngụ ý dữ liệu khổng lồ mà vẫn cần phải được quản lý theo cách tương tự như mã nguồn và đơn giản hơn là có mọi thứ cùng nhau. Mercurial đã cố gắng khắc phục sự cố này với phần mở rộng tệp lớn hiện đã chính thức và được cung cấp với hg, nhưng nó không thực sự giải quyết vấn đề cuối cùng và khiến cho tổ chức trở nên phức tạp. – Klaim

+2

Xin chào, tính đến hôm nay (2015) bạn vẫn đồng ý rằng đó là một lựa chọn tốt cho hình ảnh và tệp lớn? – Draconar

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