Sau hai tháng làm việc chăm chỉ, cộng đồng phát triển của Git giới thiệu Git phiên bản 2.51, một bản cập nhật mà Nó tập hợp 506 thay đổi, trong đó có 91 nhà phát triển tham gia, trong đó có 21 người đóng góp lần đầu tiên.
Bản phát hành này giới thiệu những cải tiến được thiết kế để cải thiện hiệu suất và đơn giản hóa việc quản lý kho lưu trữ, bao gồm tối ưu hóa hiệu suất cho git-push và git-fetch, cũng như một số thay đổi hướng tới nhánh 3.x mới.
Git 2.51 Các tính năng mới chính
Một trong những điểm nổi bật của Git 2.51 là Tối ưu hóa lệnh git push và git fetch trong các kho lưu trữ có nhiều tài liệu tham khảo. Chìa khóa cho sự cải tiến này nằm ở bản cập nhật hàng loạt, xử lý nhiều liên kết trong một giao dịch duy nhất thay vì từng liên kết riêng lẻ.
Nhờ vào sự tối ưu hóa này, Phần phụ trợ có thể tham chiếu hiện nay hoạt động tốt hơn phần phụ trợ tệp truyền thống.Trong các thử nghiệm với kho lưu trữ chứa tới 10 tham chiếu, hiệu suất git fetch tăng 000 lần đối với reftable và 22 lần đối với tệp, trong khi git push được cải thiện lần lượt là 1.25 lần và 18 lần.
Một cải tiến quan trọng khác là iGiới thiệu cái gọi là gói rác, được thiết kế để lưu trữ các đối tượng không thể truy cập được, không được liên kết với các nhánh hoặc thẻ. Những đối tượng này, trước đây bị phân tán, bây giờ có thể được quản lý trong bao bì riêng biệts, giúp chúng dễ kiểm soát hơn và giảm kích thước của các chỉ mục đa gói (MIDX).
Với sự thiết lập repack.MIDXMustContainCruft mới, Git tránh đưa các đối tượng này vào các chỉ mục chínhTrong các thử nghiệm trên GitHub, cấu hình này đã giảm kích thước chỉ mục xuống 38%, tăng tốc độ ghi lên 35% và cải thiện tốc độ đọc lên 5%.
Cách tiếp cận mới để đóng gói đối tượng
El lệnh git pack-objects kết hợp tùy chọn –path-walk, giới thiệu một phương pháp cải tiến để sắp xếp lại các tập tin đóng gói. Thay vì xử lý các đối tượng dựa trên hàm băm của chúng, Git giờ đây có thể lặp lại chúng dựa trên đường dẫn tệp, đóng gói những đối tượng có cùng vị trí với nhau. Phương pháp này loại bỏ nhu cầu sắp xếp trước các đối tượng và tạo ra các tệp đóng gói nhỏ hơn, hiệu quả hơn.
Với phiên bản này nữa Một định dạng mới để trao đổi trạng thái cây làm việc và chỉ mục được tạo bằng Git Stash đã được chuẩn hóa.. Giờ đây, bạn có thể xuất và nhập kho lưu trữ giống như các nhánh hoặc thẻ, giúp việc di chuyển trạng thái từ hệ thống này sang hệ thống khác trở nên dễ dàng hơn.
Ví dụ:
git stash export --to-ref refs/stashes/mi-stash git push origin refs/stashes/mi-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash
Cải tiến cho các lệnh cổ điển
Một số Các lệnh Git đã nhận được các bản cập nhật có liên quan:
- git cat-file hiện báo cáo các đối tượng và mô-đun con bị thiếu, hiển thị mã định danh thay vì chỉ đánh dấu "bị thiếu".
- git log được hưởng lợi từ việc tối ưu hóa bộ lọc Bloom, tăng tốc tìm kiếm với nhiều đường dẫn tệp.
- Các lệnh git switch và git restore, được coi là thử nghiệm từ năm 2019, cuối cùng đã được ổn định như những lựa chọn thay thế hiện đại cho git checkout.
- Lệnh git whatchanged, tương đương với lệnh git log –raw, đã lỗi thời và sẽ bị xóa trong Git 3.0.
- git for-each-ref nhận được tùy chọn –start-after, cùng với –count cho phép phân trang đầu ra.
- git merge và git pull hiện bao gồm tùy chọn –compact-summary, cung cấp định dạng tóm tắt ngắn gọn hơn.
Hỗ trợ C99 và các quy tắc đóng góp mới
Git tiếp tục điều chỉnh mã của mình theo các đặc điểm của tiêu chuẩn C99. Mặc dù trình biên dịch tương thích là bắt buộc kể từ năm 2021, các nhà phát triển vẫn thận trọng để duy trì khả năng tương thích với các trình biên dịch chỉ triển khai một phần.
Ngoài ra, một thay đổi đáng kể đã được đưa ra trong chính sách đóng góp: Bản vá lỗi hiện có thể được gửi dưới bút danh, một quyết định phù hợp với các quy tắc của hạt nhân Linux và được thiết kế để mang lại sự linh hoạt hơn cho những người đóng góp.
Nhìn về phía trước Git 3.0
El Nhóm phát triển cũng đã cập nhật lộ trình lên Git 3.0., trong đó hai thay đổi quan trọng nổi bật: việc sử dụng mặc định SHA-256 làm mã định danh đối tượng và áp dụng định dạng có thể tham chiếu để lưu trữ các tham chiếu nhánh và thẻ. Những cải tiến này nhằm mục đích nâng cao tính bảo mật và hiệu quả trong các kho lưu trữ ngày càng lớn và phức tạp.
Fuente: https://lore.kernel.org