Bản phát hành kiểm soát nguồn Git 2.39

Sau hai tháng phát triển, hệ thống kiểm soát nguồn phân tán Git 2.39 đã được phát hành. Git là một trong những hệ thống kiểm soát phiên bản phổ biến, đáng tin cậy và hiệu suất cao nhất, cung cấp các công cụ phát triển phi tuyến tính linh hoạt dựa trên việc phân nhánh và hợp nhất. Để đảm bảo tính toàn vẹn của lịch sử và khả năng chống lại các thay đổi hồi tố, hàm băm ngầm của toàn bộ lịch sử trước đó được sử dụng trong mỗi lần xác nhận; cũng có thể chứng nhận các thẻ riêng lẻ và các lần xác nhận bằng chữ ký điện tử của nhà phát triển.

So với phiên bản trước, phiên bản mới bao gồm 483 thay đổi, được chuẩn bị với sự tham gia của 86 nhà phát triển, trong đó 31 nhà phát triển lần đầu tiên tham gia phát triển. Những đổi mới chính:

  • Lệnh “git shortlog”, nhằm mục đích hiển thị các bản tóm tắt với số liệu thống kê từ lịch sử thay đổi, đã thêm tùy chọn “-group” để nhóm các cam kết tùy ý theo các trường không giới hạn đối với tác giả hoặc người gửi. Ví dụ: để hiển thị danh sách các nhà phát triển với thông tin về số lượng thay đổi, có tính đến những người trợ giúp được đề cập trong trường "Đồng tác giả", bạn có thể sử dụng lệnh: git shortlog -ns --group=author - -group=trailer:đồng tác giả

    Đầu ra của nhật ký ngắn có thể được tổng hợp bằng cách sử dụng các công cụ xác định định dạng và tùy chọn “--group” có thể đơn giản hóa đáng kể việc tạo các báo cáo phức tạp và loại bỏ nhu cầu về các lệnh sắp xếp bổ sung. Ví dụ: để tạo một báo cáo có thông tin về số lượng cam kết cho một bản phát hành nhất định được chấp nhận trong mỗi tháng, bạn có thể chỉ định: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Trước đây, để thực hiện một thao tác tương tự, cần phải sử dụng các tiện ích sắp xếp và uniq: git log v2.38.0 .. —date='format:%Y -%m' —format='%cd' | sắp xếp | uniq -c

  • Khả năng của cơ chế “gói hành trình”, được thiết kế để đóng gói các đối tượng không thể truy cập được và không được tham chiếu trong kho lưu trữ (không được tham chiếu bởi các nhánh hoặc thẻ), đã được mở rộng. Các đối tượng không thể truy cập sẽ bị trình thu gom rác xóa nhưng vẫn tồn tại trong kho lưu trữ một thời gian nhất định trước khi chúng bị xóa để tránh tình trạng chạy đua. Cơ chế “gói hành trình” cho phép bạn lưu trữ tất cả các đối tượng không thể truy cập được trong một tệp gói và hiển thị dữ liệu về thời gian sửa đổi của từng đối tượng trong một bảng riêng, được lưu trữ trong một tệp riêng có phần mở rộng “.mtimes”, để chúng thực hiện được không trùng lặp với tổng thời gian sửa đổi.

    Khoảng thời gian mà các đối tượng không thể truy cập vẫn còn trong kho lưu trữ trước khi chúng thực sự bị xóa được xác định bởi tùy chọn “--prune=”. Tuy nhiên, mặc dù trì hoãn trước khi xóa là một cách khá hiệu quả và thiết thực để ngăn ngừa hỏng kho lưu trữ do điều kiện chủng tộc, nhưng nó không đáng tin cậy 100%. Để giúp khôi phục kho lưu trữ bị hỏng dễ dàng hơn, bản phát hành mới cung cấp khả năng lưu các đối tượng bị thiếu bằng cách thêm tùy chọn “--expire-to” vào lệnh “git repack”, cho phép bạn chỉ định một tệp để tạo kho lưu trữ bên ngoài. bản sao của tất cả các đối tượng đã bị xóa. Ví dụ: để lưu các đối tượng không thể truy cập không thay đổi trong 5 phút qua trong tệp backup.git, bạn có thể sử dụng lệnh: git repack --cruft --cruft-expiration=5. Minutes.ago -d --expire -to=../backup.git

  • Tăng đáng kể (lên tới 70%) tốc độ của hoạt động "git grep -cached" khi tìm kiếm trong các khu vực sử dụng nhân bản một phần (kiểm tra thưa thớt) và có chỉ mục một phần (chỉ mục thưa thớt). Trước đây, khi chỉ định tùy chọn “-cached”, việc tìm kiếm được thực hiện trước tiên trong chỉ mục thông thường, sau đó là chỉ mục một phần, dẫn đến độ trễ đáng chú ý khi tìm kiếm trong các kho lưu trữ lớn.
  • Việc xác minh của máy chủ về tính gắn kết của các đối tượng mới trước khi chúng được đặt vào kho lưu trữ trong quá trình hoạt động "git push" đã được tăng tốc. Bằng cách chuyển sang tính toán chỉ các liên kết được khai báo khi kiểm tra, trong kho lưu trữ thử nghiệm có 7 triệu liên kết, trong đó chỉ có 3% được bao phủ bởi thao tác đẩy, các tối ưu hóa được thực hiện cho phép giảm thời gian kiểm tra xuống 4.5 lần.
  • Để bảo vệ chống lại khả năng tràn số nguyên trong mã, lệnh "git apply" giới hạn kích thước tối đa của các bản vá có thể được xử lý. Nếu kích thước bản vá vượt quá 1 GB, lỗi sẽ được hiển thị.
  • Để bảo vệ khỏi các lỗ hổng tiềm ẩn, các thay đổi đã được thực hiện để xóa thông tin không cần thiết khỏi các tiêu đề được đặt khi sử dụng mô-đun h2h3 với tùy chọn GIT_TRACE_CURL=1 hoặc GIT_CURL_VERBOSE=1 cùng với HTTP/2.
  • Khi thực hiện kiểm tra trên một nhánh là liên kết tượng trưng đến một nhánh khác, lệnh "git Symbolic-ref HEAD" hiện hiển thị tên của nhánh đích thay vì tên của liên kết tượng trưng.
  • Đã thêm hỗ trợ cho đối số @{-1} vào tùy chọn “--edit-description” (“nhánh git —edit-description @{-1}”) để chỉnh sửa mô tả của nhánh trước đó.
  • Đã thêm lệnh "git merge-tree --stdin" để chuyển danh sách các tham số thông qua đầu vào tiêu chuẩn.
  • Trên các hệ thống tệp mạng, trình xử lý fsmonitor, theo dõi các thay đổi trong hệ thống tệp, bị tắt theo mặc định.

Nguồn: opennet.ru

Thêm một lời nhận xét