Git 2.50: Cải thiện hiệu suất cho các kho lưu trữ lớn và hơn thế nữa

git-2.50

Một vài ngày trước nó đã được công bố Phát hành phiên bản mới của dự án Git 2.50, giới thiệu hơn 600 thay đổi được thúc đẩy bởi một cộng đồng năng động, lần này bao gồm 98 nhà phát triển, trong đó có 35 cộng tác viên mới.

Phiên bản Git 2.50 mới này nổi bật với việc tích hợp các lệnh mới (git-diff-pairs), các chức năng mới để dọn dẹp, lọc và bảo trì, thay thế công cụ hợp nhất đệ quy bằng ORT, cũng như cải thiện hiệu suất và sửa lỗi.

Git 2.50 Các tính năng mới chính

Trong phiên bản mới này của Git 2.50, một trong những tính năng mới quan trọng nhất là tối ưu hóa trong việc xử lý cái gọi là "gói rác", Tức là các gói đối tượng không thể truy cập hoặc không được tham chiếu bởi các nhánh hoặc thẻ. Theo truyền thống, Git lưu trữ các đối tượng này trong một tệp gói lớn duy nhất, điều này có thể gây ra các vấn đề về hiệu suất khi đóng gói lại các kho lưu trữ với nhiều mục này.

Với phiên bản mới, Git cho phép bạn chia những gói rác này thành nhiều tệp nhỏ hơn, giúp giảm mức sử dụng đĩa và cải thiện hiệu suất đầu vào/đầu ra cho các hoạt động hàng loạt. Ngoài ra, svà nhập tùy chọn –combine-cruft-below-sizeCho phép kết hợp các gói nhỏ thành một gói linh hoạt hơn so với tùy chọn –max-cruft-size trước đó, mà không áp đặt giới hạn cho kích thước tệp kết hợp. Tính năng mới này đặc biệt hữu ích trong các dự án có đối tượng mồ côi trải rộng trên nhiều gói.

Một cải tiến khác hướng đến các kho lưu trữ quy mô lớn là hỗ trợ thử nghiệm cho bản cập nhật gia tăng của Chỉ số MIDX , mà Họ lưu trữ thông tin về các đối tượng trong các lớp riêng biệt sử dụng các tệp bitmap, cho phép cập nhật nhanh hơn khi thêm các cam kết mới. Sự tiến bộ này rất quan trọng đối với các kho lưu trữ lớn yêu cầu các hoạt động lập chỉ mục nhanh mà không cần phải xây dựng lại toàn bộ siêu dữ liệu.

Thay thế hoàn toàn công cụ hợp nhất đệ quy bằng ORT

Git 2.50 giới thiệu một thay đổi lớn với xóa vĩnh viễn công cụ tổng hợp đệ quy truyền thống. Thay vào đó, việc sử dụng ORT được hợp nhất, One Động cơ tổng hợp hiện đại hơn, dễ bảo trì hơn và hiệu quả hơn. ORT không chỉ cung cấp phân tích xung đột chính xác hơn mà còn cho phép bạn xác minh xem có thể hợp nhất mà không cần tạo thêm đối tượng hay không. Hơn nữa, lệnh merge-tree hiện bao gồm tùy chọn –quiet để sử dụng như trình kiểm tra hợp nhất im lặng mà không cần sửa đổi kho lưu trữ.

gitt-diff-pairs: giải pháp cho các vấn đề về khả năng mở rộng

Đánh giá mã chắc chắn là một trong những trụ cột của quá trình phát triển hợp tác hiện đại và sự khác biệt hoặc khác biệt giữa các bản sửa đổi đóng vai trò quan trọng trong quá trình này. Với sự ra đời của Git 2.50, một giải pháp được thiết kế cho khả năng mở rộng đã được giới thiệu: lệnh git-diff-pairs mới.

Theo truyền thống, để so sánh giữa hai bản sửa đổi, bạn sử dụng lệnh như sau:

git diff HEAD~1 HEAD

Điều này tạo ra một bản vá hoàn chỉnh chứa tất cả các thay đổi giữa các bản sửa đổi được liệt kê. Mặc dù hiệu quả trong nhiều trường hợp, nhưng nó có thể là vấn đề về hiệu suất khi xử lý các tập tin đã sửa đổi lớn.

Đó là lý do tại sao git-diff-pairs được thiết kế riêng để nhận dữ liệu đầu vào thô trực tiếp từ đầu ra của git diff-tree và tạo các bản vá tương ứng một cách hiệu quả và chính xác.

Cách sử dụng đơn giản như sau:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

Lệnh này lấy các cặp blob được cung cấp và tạo ra đầu ra diff chính xác, bảo toàn thông tin theo ngữ cảnh và cho phép chia công việc thành các đợt nhỏ hơn. Điều này mở ra cánh cửa cho xử lý song song, cải thiện hiệu quả tài nguyên và tạo điều kiện cho khả năng mở rộng trong các công cụ dựa trên diff như GitLab.

Các tính năng mới để vệ sinh, lọc và bảo trì

Git 2.50 bao gồm một số công cụ bổ sung được thiết kế để cải thiện việc bảo trì kho lưu trữ:

  • Lệnh đã được thêm vào git reflog thả, cho phép bạn xóa hoàn toàn reflog cho một nhánh cụ thể, lý tưởng để dọn dẹp lịch sử công việc của bạn khi bạn không còn cần phải duy trì các tham chiếu trước đó.
  • các tùy chọn -lọc cat-file –batch hiện có sẵn trong git, cho phép bạn lọc kết quả theo loại đối tượng.

Ngoài ra, một số tối ưu hóa nội bộ cũng được nêu bật:

  • Cải thiện việc sử dụng liên kết tượng trưng, ​​với bộ nhớ đệm tiền tố và giảm các lần kiểm tra trùng lặp.
  • Loại bỏ các phụ thuộc Perl trong tài liệu và tập lệnh thử nghiệm, thay thế chúng bằng các hàm shell hoặc triển khai C, giúp biên dịch dễ dàng hơn trên các hệ thống có cấu hình tối giản.
  • Bao gồm một bộ điều khiển người dùng khác biệt để phân tích sự khác biệt trong các tệp .ini.
  • Cải thiện khả năng tương thích của lệnh git send-email với các máy chủ SMTP như Outlook.

Cuối cùng, nếu bạn muốn biết thêm về nó, bạn có thể tham khảo thông tin chi tiết trong liên kết theo dõi.