2010-11-18 16 views
6

thể trùng lặp:
Merging: hg/git vs. svnĐiều gì làm cho Git tốt hơn Subversion để hợp nhất?

Tôi đã nghe/đọc mà của Git và DVCS nói chung là tốt hơn so với Subversion và hệ thống kiểm soát phiên bản tập trung. Và một trong những lý do tôi đã nghe cho điều này là việc sáp nhập tốt hơn rất nhiều trong DVCS so với hệ thống tập trung.

Sự khác biệt giữa hai khi nói đến việc hợp nhất là gì? Điều gì làm cho Git tốt hơn Subversion khi bạn đang tích hợp lại một nhánh, ví dụ?

+0

Tôi nghĩ rằng rất nhiều "cuộc tranh luận sáp nhập SVN" đến từ những người hâm mộ DVCS. Sáp nhập là một trong những điều mà SVN cải thiện rất nhiều so với CVS, nhưng danh tiếng xấu của CVS (xứng đáng) có thể phản ánh trên SVN. Trong nhóm của chúng tôi, chúng tôi hợp nhất rất nhiều trong SVN, và tôi không biết vấn đề gì. – sbi

+2

Rất có liên quan: http://stackoverflow.com/questions/2613525/what-makes-merging-in-dvcs-easy – kolobos

Trả lời

5

Không quá nhiều thực tế là chúng được phân phối, nhưng nhiều hơn là chúng theo dõi các thay đổi thay vì các phiên bản. (Tuy nhiên, các hệ thống phân tán thường làm việc với các bộ thay đổi, trong khi các hệ thống tập trung thường sử dụng các phiên bản, điều này là do các hệ thống phân tán sẽ không hoạt động với cách tiếp cận dựa trên phiên bản, trong khi các hệ thống tập trung có thể thoát khỏi nó).

Subversion nói, OK, trước tiên tôi có phiên bản này và sau đó tôi đã có phiên bản đó. Và khi đó là thời gian để hợp nhất, phải mất hai phiên bản, so sánh chúng, và làm cho giáo dục đoán về cách kết hợp chúng. Git, mercurial, và SCM tương tự, nói, OK, đầu tiên tôi không có gì, sau đó ai đó thực hiện thay đổi này và sau đó một người khác thực hiện thay đổi đó, v.v. Khi thời gian hợp nhất, về cơ bản tất cả những gì họ cần làm là áp dụng các thay đổi trong chính xác đặt hàng, sửa chữa cho số dòng ở đây và ở đó và lấy đổi tên tập tin vào tài khoản, nhưng đó là về cơ bản nó.

Subversion không thực sự có đủ thông tin để thực hiện hợp nhất thông minh: nó chỉ thấy sự khác biệt, nhưng không thấy chúng đến từ đâu.

+4

Không thể Subversion duyệt qua các bản sửa đổi để tìm cùng một thông tin? –

+2

@Lasse: Tất nhiên là có. Sự khác biệt giữa 'r1' và' r2' nếu không thay đổi giữa 'r1' và' r2' là gì? Lập luận đó thực sự trốn thoát tôi. – sbi

+3

Vâng, nếu Subversion chỉ xem xét tệp gốc, và sau đó là kết quả cuối cùng, nó sẽ mất tất cả các bước trung gian, nơi DVCS làm ít nhất sử dụng các bước đó để thực hiện hợp nhất. Nhưng câu hỏi của tôi là tại sao Subversion không thể phân tích các bản sửa đổi trung gian để tìm các bước đó. Tôi vẫn đang tìm kiếm một lời giải thích tốt về nơi mà sự kỳ diệu trong việc sáp nhập DVCS bắt nguồn từ. –

3

Linus torvalds đã nói chuyện trên git, available on youtube và đáng xem. Trong đó, ông bác bỏ tất cả các giải pháp kiểm soát nguồn nhưng git, sau đó giải thích tại sao git lại tuyệt vời.

Cá nhân, tôi thấy git bực bội khi liên hệ và tôi sử dụng SVN một cách chuyên nghiệp mỗi ngày. Tôi nghĩ rằng svn là đủ nhanh và không phân nhánh & sáp nhập đủ tốt cho nhu cầu của tôi.

Nhưng tôi không có chuyên gia kiểm soát nguồn!

+2

Vâng, anh ta giải thích rằng git * là * tuyệt vời, nhưng không nhiều đến mức * cách * git quản lý được tuyệt quá. Ví dụ, anh ta nói rằng git theo dõi toàn bộ dự án thay vì các tệp riêng lẻ. Tuy nhiên, các thí nghiệm đơn giản với việc di chuyển văn bản sang một tệp khác song song với một người nào đó thay đổi nó vẫn mang lại cho tôi những xung đột hợp nhất. –

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