Phát hành hệ thống kiểm soát nguồn phân tán Git 2.22

giới thiệu phát hành hệ thống kiểm soát nguồn phân tán Git 2.22.0. 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 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 các nhánh. Để đảm bảo tính toàn vẹn của lịch sử và khả năng chống lại những thay đổi trong nhận thức muộn, hàm băm ngầm định của toàn bộ lịch sử trước đó trong mỗi lần xác nhận được sử dụng, cũng có thể xác minh chữ ký số của nhà phát triển các thẻ và lần xác nhận riêng lẻ.

So với bản phát hành trước, 745 thay đổi đã được chấp nhận trong phiên bản mới, được chuẩn bị với sự tham gia của 74 nhà phát triển, trong đó 18 người lần đầu tiên tham gia phát triển. Chính đổi mới:

  • Có sẵn kể từ bản phát hành 1.18, chế độ di chuyển tập hợp cam kết mới "git rebase --rebase-merges" đã thay thế tùy chọn "--preserve-merges" cũ, hiện không được dùng nữa. Thao tác "git rebase" được sử dụng để thay thế một loạt các lần xác nhận bằng một lần xác nhận cơ sở mới, chẳng hạn như để di chuyển một nhánh duy nhất phát triển một số tính năng mới sang trạng thái hiện tại của nhánh chính, bao gồm các bản sửa lỗi được thêm vào sau nhánh:

    o - o - o (tính năng của tôi)

    /

    o - o - o - o - o (chính chủ)

    o - o - o (tính năng của tôi)

    /

    o - o - o - o - o (chính chủ)

    Để duy trì cấu trúc nhánh trong nhánh đã di chuyển, tùy chọn “--preserve-merges” trước đây có thể được sử dụng, khi chạy ở chế độ tương tác (git rebase -i --preserve-merges ), cho phép chỉnh sửa lịch sử cam kết, nhưng đã không đảm bảo việc bảo tồn hoàn toàn cấu trúc kho lưu trữ. Chế độ "--rebase-merges" thay thế cho phép bạn giữ cấu trúc thay đổi trong nhánh đã di chuyển, đồng thời cung cấp đầy đủ các hoạt động tương tác, bao gồm xóa, nhóm lại và đổi tên các cam kết.

    Ví dụ: "--rebase-merges" cho phép đẩy lại các cam kết từ một nhánh riêng biệt sang một nhánh chính mới hơn trong khi vẫn giữ nguyên cấu trúc nhánh trong nhánh đã di chuyển và thực hiện một số thay đổi đối với ghi chú cam kết khi bạn thực hiện.

  • Đã thêm hỗ trợ để tạo một nhánh mới dựa trên kết quả xác định cơ sở hợp nhất của hai nhánh khác (cơ sở hợp nhất, liên kết với một tổ tiên chung) bằng cách sử dụng “git branch new A…B” và “git checkout -b new A…B ” cấu trúc, trong đó “A ...B" ngụ ý xác định cơ sở hợp nhất giữa hai lần xác nhận được chỉ định, tương tự như cách "git checkout A...B" chuyển HEAD sang lần xác nhận cơ sở và "diff A...B" hiển thị các thay đổi giữa cam kết "B" và thay đổi được chia sẻ với cam kết "A".» tổ tiên.

    Ví dụ: khi làm việc trên một nhánh tính năng của tôi riêng biệt, tính năng được đề xuất có thể được sử dụng khi bạn muốn bắt đầu từ một nhánh khác, chẳng hạn như từ cùng một vị trí trong nhánh chính mà nhánh tính năng của tôi đã được kiểm tra. Trước đây, điều này yêu cầu kiểm tra nhật ký thay đổi theo cách thủ công, điều này gây bất tiện khi có lịch sử thay đổi lớn, sau đó thực hiện "git merge-base master my-feature" để tính hàm băm của cơ sở hợp nhất giữa các nhánh master và my-feature, và tạo một nhánh mới liên quan đến tổ tiên chung "git branch my-other-feature hash". Trong Git 2.22, bạn có thể sử dụng cú pháp "git branch my-other-feature A…B" để tạo một nhánh liên quan đến cơ sở hợp nhất của hai nhánh khác;

  • Đã thêm tùy chọn "git branch --show-current" để hiển thị tên của nhánh thu được từ thao tác thanh toán;
  • Đã thêm tùy chọn "git checkout --no-overlay -- dir", cho phép, khi thực hiện thao tác kiểm tra, đưa nội dung của thư mục dir về dạng hoàn toàn tương ứng với trạng thái của nhánh chính. Ví dụ: nếu có một tệp trong bản sao cục bộ của thư mục dir không nằm trong nhánh chính, thì theo mặc định khi thực hiện "git checkout master - dir" nó sẽ ở bên trái và khi "--no-overlay " tùy chọn được chỉ định, nó sẽ bị xóa;
  • Lệnh "git diff" sử dụng API phân tích cú pháp tùy chọn chung để thống nhất xử lý tùy chọn với các tiện ích git khác. Ví dụ: trong "git diff", tất cả các tùy chọn hiện có sẵn các đối kháng của chúng ("--function-context" và "--no-function-context");
  • Đã thêm khả năng lọc khi xuất các thẻ mở rộng "git log" được đính kèm với các xác nhận ("đoạn giới thiệu" - các cờ thông tin bổ sung, chẳng hạn như Đã đăng xuất và Đồng tác giả). Có thể lọc nhãn theo khóa và theo giá trị, ví dụ:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • Một công cụ theo dõi mới, Trace2, đã được thêm vào, cung cấp định dạng đầu ra có cấu trúc và linh hoạt hơn. Trace2 cho phép bạn thu thập phép đo từ xa về các hoạt động đã thực hiện và dữ liệu hiệu suất để phân tích và gỡ lỗi chi tiết hơn (trình xử lý do người dùng chỉ định, không có dữ liệu nào được gửi ra bên ngoài);
  • Làm cho báo cáo "git bisect" dễ đọc hơn, giờ đây làm nổi bật rõ ràng hơn các cam kết có vấn đề và hiển thị thống kê tóm tắt về các thay đổi cho từng tệp (ở cấp độ số lượng dòng đã thay đổi);
  • Các heuristic để phát hiện đổi tên thư mục đã được thiết kế lại để tránh cài đặt sai cờ đổi tên. Khi nghi ngờ, các thư mục như vậy hiện được đánh dấu là xung đột;
  • Một cảnh báo được đưa ra khi cố gắng đặt thẻ thành một thẻ khác, theo quy tắc, việc này được thực hiện do nhầm lẫn và có thể dẫn đến việc đặt thẻ vào một cam kết sai (ví dụ: một cấu trúc như "git tag -f -m " thông báo cập nhật" my-tag1 my- tag2" sẽ dẫn đến một thẻ được tạo trên thẻ cũ, trong khi nhà phát triển đang mong đợi thẻ mới được đặt trên cam kết được trỏ đến bởi thẻ cũ);
  • Tính năng tạo được kích hoạt cho các kho lưu trữ bitmap (cấu trúc đĩa "bitmap khả năng tiếp cận") lưu trữ dữ liệu về các tập hợp đối tượng có sẵn cho mỗi lần xác nhận và cho phép bạn nhanh chóng xác định sự hiện diện của đối tượng bên dưới. Cấu trúc được chỉ định giúp giảm đáng kể thời gian thực hiện các hoạt động trích xuất dữ liệu (tìm nạp git).

Nguồn: opennet.ru

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