Hệ thống kiểm soát nguồn phân tán Git 2.31 hiện đã có sẵn. 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 679 thay đổi, được chuẩn bị với sự tham gia của 85 nhà phát triển, trong đó 23 nhà phát triển lần đầu tiên tham gia phát triển. Những đổi mới chính:
- Đã thêm lệnh “bảo trì git”, cho phép bạn thực hiện công việc định kỳ trên các hệ thống không hỗ trợ cron. Ví dụ: bằng cách sử dụng lệnh mới, bạn có thể sắp xếp để quy trình đóng gói kho lưu trữ chạy định kỳ, do đó bạn không phải đợi cho đến khi kho lưu trữ bị khóa khi quá trình đóng gói được thực hiện tự động trong khi chạy các lệnh khác nhau. Lệnh “bảo trì git” cho phép bạn thực hiện tối ưu hóa và vận hành để duy trì cấu trúc tối ưu của kho lưu trữ ở chế độ nền mà không chặn phiên tương tác - mỗi giờ một lần, công việc được thực hiện để chủ động tải xuống các đối tượng mới từ kho lưu trữ từ xa và cập nhật tệp có biểu đồ cam kết và quá trình đóng gói kho lưu trữ bắt đầu hàng đêm.
- Đã thêm hỗ trợ để duy trì chỉ mục đảo ngược (revindex) trên đĩa cho các tệp gói. Hãy nhớ lại rằng Git lưu trữ tất cả dữ liệu ở dạng đối tượng, nằm trong các tệp riêng biệt. Để tăng hiệu quả làm việc với kho lưu trữ, các đối tượng còn được đặt thêm trong các tệp gói, trong đó thông tin được trình bày dưới dạng luồng các đối tượng nối tiếp nhau (định dạng tương tự được sử dụng khi chuyển các đối tượng bằng git tìm nạp và git đẩy lệnh). Đối với mỗi tệp gói, một tệp chỉ mục (.idx) được tạo, cho phép bạn xác định rất nhanh phần bù trong tệp gói mà đối tượng đã cho được lưu trữ bằng cách sử dụng mã định danh đối tượng. Được giới thiệu trong Git 2.31, chỉ mục ngược (.rev) nhằm mục đích tối ưu hóa quá trình xác định mã định danh đối tượng từ thông tin về vị trí của một đối tượng trong tệp gói.
Trước đây, việc chuyển đổi như vậy được thực hiện nhanh chóng trong khi phân tích tệp gói và chỉ được lưu trữ trong bộ nhớ, điều này không cho phép sử dụng lại các chỉ mục tương tự và buộc phải tạo chỉ mục mỗi lần. Hoạt động xây dựng chỉ mục bao gồm việc xây dựng một mảng các cặp đối tượng-vị trí và sắp xếp nó theo vị trí, việc này có thể mất nhiều thời gian đối với các tệp gói lớn.
Ví dụ: thao tác hiển thị nội dung của các đối tượng sử dụng chỉ mục trực tiếp nhanh hơn 62 lần so với thao tác hiển thị kích thước của đối tượng mà dữ liệu vị trí đối tượng không được lập chỉ mục. Sau khi sử dụng chỉ mục ngược, các thao tác này bắt đầu mất khoảng thời gian tương tự. Chỉ mục ngược cũng cho phép bạn tăng tốc các thao tác gửi đối tượng khi thực hiện lệnh tìm nạp và đẩy bằng cách truyền trực tiếp dữ liệu đã tạo sẵn từ đĩa. Theo mặc định, các chỉ mục ngược không được tạo; để tạo chúng, bạn cần bật cài đặt “git config pack.writeReverseIndex true” và sau đó đóng gói kho lưu trữ bằng lệnh “git repack -Ad”.
- Đã thêm tối ưu hóa hiệu suất dựa trên sự xuất hiện ở định dạng tệp biểu đồ cam kết, được sử dụng để tối ưu hóa quyền truy cập vào thông tin về các cam kết, dữ liệu mới về số lượng tạo cam kết, có thể được sử dụng để tăng tốc các hoạt động bổ sung với các cam kết.
- Khả năng ghi đè tên nhánh chính mặc định trong các kho lưu trữ mới (thiết lập init.defaultBranch) đã được mở rộng. Khi truy cập các kho lưu trữ bên ngoài, git cố gắng truy xuất nhánh được trỏ bởi HEAD, tức là nếu kho lưu trữ bên ngoài máy chủ Theo mặc định, Git sử dụng nhánh "main", do đó thao tác "git clone" sẽ cố gắng tải về nhánh "main" cục bộ. Trong Git 2.31, hỗ trợ cho loại tải về này hiện cũng được triển khai cho các kho lưu trữ trống. Ví dụ, khi sao chép cục bộ một kho lưu trữ mới trước khi thêm các bản vá đầu tiên vào đó, bản sao cục bộ giờ đây sẽ chứa phiên bản được cài đặt trên kho lưu trữ bên ngoài. người phục vụ Tên mặc định của nhánh chính.
- Đã thêm tùy chọn --disk-usage vào lệnh "git rev-list" để cung cấp bản tóm tắt về kích thước của đối tượng.
- Dự đoán về sự thay đổi sắp tới đối với phần phụ trợ hợp nhất, tính năng phát hiện đổi tên đã được tối ưu hóa đáng kể.
- Hỗ trợ cho thư viện biểu thức chính quy PCRE1 cũ đã bị ngừng.
- Có thể nghiêm cấm việc sử dụng các liên kết rút gọn, bất kể thuật toán băm. Lệnh cấm được kích hoạt bằng cách gán giá trị “no” cho tham số core.abbrev.
- Đã thêm tùy chọn "--path-format=(absolute|relative)" vào lệnh "git rev-parse" để chỉ định rõ ràng đường dẫn tương đối hay tuyệt đối sẽ được xuất ra.
- Các tập lệnh hoàn thành Bash giúp dễ dàng thêm các quy tắc hoàn thành cho các lệnh con "git" của riêng bạn.
- Đã thêm tùy chọn --stdin vào lệnh "git Bundle" để đọc các tham chiếu từ luồng đầu vào tiêu chuẩn.
- Một tùy chọn mới đã được thêm vào lệnh "git log": "--diff-merges=" "
- Đã thêm tùy chọn "--deduplicatecan" vào lệnh "git ls-files" để loại bỏ đầu ra trùng lặp.
- Đã thêm mặt nạ mới để loại trừ một loạt các cam kết - " ^!” Và " ^- "
- Đã thêm tùy chọn "--left-only" và "--right-only" vào lệnh "git range-diff" để chỉ hiển thị một phía của phạm vi được so sánh.
- Đã thêm tùy chọn --skip-to= vào lệnh "git diff" và "git log" " và "—xoay-to= » để bỏ qua hoặc di chuyển đến cuối đường dẫn bắt đầu.
- Đã thêm tùy chọn "--skip-to=" vào lệnh "git Difftool" » để tiếp tục phiên bị gián đoạn từ một đường dẫn ngẫu nhiên.
- Quy tắc ứng xử, trong đó xác định các nguyên tắc cơ bản để giải quyết các tình huống xung đột giữa các nhà phát triển, đã được cập nhật lên phiên bản 2.0 (phiên bản 1.4 trước đây đã được sử dụng).
Nguồn: opennet.ru
