Cấp bậc tác giả:

TRAINING

So sánh Mercurial và Git

Được viết bởi webmaster ngày 09/11/2019 lúc 11:50 AM
Mercurial đã hỗ trợ các kho lưu trữ với nhiều nhánh. Các kho lưu trữ Git với nhiều nhánh chính xác: nhiều chuỗi phát triển được phân kỳ trong một kho lưu trữ duy nhất. Git sau đó thêm tên vào các chuỗi này và cho phép truy vấn các tên này từ xa
  • 0
  • 6426

So sánh Mercurial và Git

Tôi làm việc trên Mercurial, nhưng về cơ bản tôi tin rằng cả hai hệ thống đều tương đương nhau. Cả hai đều hoạt động với cùng một sự trừu tượng: một loạt các ảnh chụp nhanh (bộ thay đổi) tạo nên lịch sử. Mỗi bộ thay đổi biết nó đến từ đâu (bộ thay đổi cha mẹ) và có thể có nhiều bộ thay đổi con. Phần mở rộng hg-git cung cấp một cầu nối hai chiều giữa Mercurial Git và loại hiển thị điểm này.

Git tập trung mạnh vào việc làm thay đổi biểu đồ lịch sử (với tất cả các hậu quả gây ra) trong khi Mercurial không khuyến khích viết lại lịch sử, nhưng dù sao thì cũng dễ thực hiện và hậu quả của việc đó là chính xác những gì bạn mong đợi (nếu tôi sửa đổi một bộ thay đổi mà bạn đã có, khách hàng của bạn sẽ thấy nó là mới nếu bạn lấy từ tôi). Vì vậy, Mercurial có sự thiên vị đối với các lệnh không phá hủy.

Đối với các nhánh trọng lượng nhẹ, thì Mercurial đã hỗ trợ các kho lưu trữ với nhiều nhánh. Các kho lưu trữ Git với nhiều nhánh chính xác: nhiều chuỗi phát triển được phân kỳ trong một kho lưu trữ duy nhất. Git sau đó thêm tên vào các chuỗi này và cho phép truy vấn các tên này từ xa. Các dấu mở rộng cho Mercurial cho biết thêm tên địa phương, và với Mercurial 1.6, bạn có thể di chuyển các bookmark xung quanh khi bạn đẩy / kéo ..

Tôi sử dụng Linux, nhưng rõ ràng TortoiseHg nhanh hơn và tốt hơn so với Git tương đương trên Windows (do sử dụng tốt hơn hệ thống tệp Windows kém). Cả http://github.com và http://bitbucket.org đều cung cấp dịch vụ lưu trữ trực tuyến, dịch vụ tại Bitbucket rất tuyệt vời và đáp ứng (Tôi chưa thử github).

Tôi đã chọn Mercurial vì nó cảm thấy sạch sẽ và thanh lịch - Tôi đã bị loại bỏ bởi các kịch bản shell / Perl / Ruby mà tôi có với Git. Hãy thử xem qua tệp git-instaweb.sh, đó là tập lệnh shell tạo tập lệnh Ruby, chạy máy chủ web. Kịch bản shell tạo ra một kịch bản shell khác để khởi chạy tập lệnh Ruby đầu tiên. Ngoài ra còn có một chút Perl, cho biện pháp tốt.

Tôi thích bài đăng trên blog so sánh Mercurial và Git của James Bond và MacGyver - Mercurial ít quan trọng hơn Git. Dường như với tôi, những người sử dụng Mercurial không dễ bị ấn tượng như vậy. Điều này được phản ánh trong cách mỗi hệ thống thực hiện những gì Linus mô tả là "sự hợp nhất tuyệt vời nhất!" . Trong Git, bạn có thể hợp nhất với một kho lưu trữ không liên quan bằng cách thực hiện:

git fetch <project-to-union-merge>
GIT_INDEX_FILE=.git/tmp-index git-read-tree FETCH_HEAD
GIT_INDEX_FILE=.git/tmp-index git-checkout-cache -a -u
git-update-cache --add -- (GIT_INDEX_FILE=.git/tmp-index git-ls-files)
cp .git/FETCH_HEAD .git/MERGE_HEAD
git commit

Những lệnh đó trông khá phức tạp đối với mắt tôi. Trong Mercurial:

hg pull --force <project-to-union-merge>
hg merge
hg commit

Lưu ý các lệnh Mercurial hoàn toàn đơn giản và không đặc biệt - điều khác thường duy nhất là cờ --force hg pull, điều này là cần thiết vì Mercurial sẽ hủy bỏ nếu bạn lấy từ một kho lưu trữ không liên quan. Chính sự khác biệt như thế này khiến Mercurial có vẻ thanh lịch hơn đối với tôi.

Nguồn bài viết: Dịch

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML