Mọi người ở đây thấy gì về điểm mạnh và điểm yếu tương đối của Git, Mercurial và Bazaar?
Theo tôi Git mạnh của là thiết kế cơ bản sạch sẽ và bộ tính năng rất phong phú. Tôi cũng nghĩ rằng sự hỗ trợ tốt nhất cho các kho lưu trữ đa chi nhánh và quản lý các quy trình công việc nặng chi nhánh. Nó rất nhanh và có kích thước kho lưu trữ nhỏ.
Nó có một số tính năng hữu ích nhưng phải mất một số nỗ lực để sử dụng chúng. Chúng bao gồm ara (chỉ mục) trung gian có thể nhìn thấy giữa khu vực làm việc và cơ sở dữ liệu kho lưu trữ, cho phép giải quyết hợp nhất tốt hơn trong các trường hợp phức tạp hơn, tăng dần và kết hợp với cây bẩn; phát hiện đổi tên và bản sao bằng cách sử dụng heuristic tương tự thay vì theo dõi chúng bằng cách sử dụng một số loại id tệp, hoạt động tốt và cho phép đổ lỗi (chú thích) có thể theo dõi chuyển động mã trên các tệp và không chỉ đổi tên bán buôn.
Một trong những nhược điểm của nó là hỗ trợ MS Windows bị tụt lại phía sau và không đầy đủ. Một nhược điểm dễ nhận thấy khác là nó không được ghi chép tốt như ví dụ Mercurial và ít thân thiện với người dùng hơn so với đối thủ, nhưng nó thay đổi.
Theo tôi Mercurial sức mạnh của nằm ở hiệu năng tốt và kích thước kho lưu trữ nhỏ, trong hỗ trợ MS Windows tốt.
Theo tôi, sự bất đồng chính là thực tế rằng các chi nhánh địa phương (nhiều chi nhánh trong một kho lưu trữ) vẫn là công dân hạng hai, và theo cách kỳ lạ và phức tạp, nó thực hiện các thẻ. Ngoài ra cách nó xử lý đổi tên tập tin là không tối ưu (nhưng lần di chuyển này đã thay đổi). Mercurial không hỗ trợ sáp nhập bạch tuộc (có nhiều hơn hai bố mẹ).
Từ những gì tôi đã nghe và đọc các ưu điểm chính của Bazaar là nó dễ dàng hỗ trợ cho quy trình làm việc tập trung (cũng là nhược điểm, với các khái niệm tập trung có thể nhìn thấy ở nơi không nên), theo dõi đổi tên của cả tệp và thư mục.
Nhược điểm chính của nó là hiệu năng và kích thước kho lưu trữ cho các kho lưu trữ lớn với lịch sử phi tuyến dài (hiệu suất được cải thiện ít nhất là cho các kho không quá lớn), thực tế là mô hình mặc định là một trang trại trên mỗi kho lưu trữ (mặc dù bạn có thể thiết lập nó để chia sẻ dữ liệu) và các khái niệm tập trung (nhưng đó cũng là từ những gì tôi đã nghe thấy những thay đổi).
Git được viết bằng C, shell script và Perl, và có thể viết script; Mercurial được viết bằng C (lõi, để thực hiện) và Python và cung cấp API cho các tiện ích mở rộng; Bazaar được viết bằng Python và cung cấp API cho các tiện ích mở rộng.
Khi xem xét từng người trong số họ với nhau và chống lại các hệ thống kiểm soát phiên bản như SVN và Perforce, vấn đề nào cần được xem xét?
Các hệ thống kiểm soát phiên bản như Subversion (SVN), Perforce hoặc ClearCase là các hệ thống kiểm soát phiên bản tập trung . Git, Mercurial, Bazaar (và cả Darcs, Monotone và BitKeeper) là các hệ thống kiểm soát phiên bản phân tán . Hệ thống kiểm soát phiên bản phân tán cho phép phạm vi công việc rộng hơn nhiều. Họ cho phép sử dụng "xuất bản khi sẵn sàng". Họ có sự hỗ trợ tốt hơn cho việc phân nhánh và sáp nhập, và cho các quy trình công việc nặng chi nhánh. Bạn không cần phải tin tưởng những người có quyền truy cập cam kết để có thể nhận được đóng góp từ họ một cách dễ dàng.
Khi lập kế hoạch di chuyển từ SVN sang một trong những hệ thống kiểm soát phiên bản phân tán này, bạn sẽ xem xét các yếu tố nào?
Một trong những yếu tố bạn có thể muốn xem xét là sự hỗ trợ cho việc rút tiền với SVN; Git có git-svn, Bazaar có bzr-svn và Mercurial có phần mở rộng chuyển tiếp.
Tuyên bố miễn trừ trách nhiệm: Tôi là người dùng Git và người đóng góp thời gian nhỏ, và xem (và tham gia) danh sách gửi thư git. Tôi chỉ biết Mercurial và Bazaar từ tài liệu của họ, các cuộc thảo luận khác nhau về IRC và danh sách gửi thư, và các bài đăng trên blog và bài viết so sánh các hệ thống kiểm soát phiên bản khác nhau (một số được liệt kê trên trang GitComparison trên Git Wiki).