Git 2.39 源代碼控制發布

經過兩個月的開發,分散式源碼控制系統Git 2.39已經發布。 Git 是最受歡迎、可靠和高效能的版本控制系統之一,提供基於分支和合併的靈活的非線性開發工具。為了確保歷史記錄的完整性和對追溯更改的抵抗力,在每次提交中都會使用整個先前歷史記錄的隱式哈希;還可以使用開發人員的數位簽名來驗證各個標籤和提交。

與先前版本相比,新版本共包含 483 個變更,由 86 名開發人員參與準備,其中 31 名開發人員首次參與開發。主要創新點:

  • 「git Shortlog」指令旨在顯示變更歷史記錄中的統計資料摘要,它新增了一個「-group」選項,用於按不限於作者或提交者的欄位對提交進行任意分組。例如,要顯示開發人員列表以及有關更改數量的信息,考慮到“共同作者”字段中提到的幫助程序,您可以使用以下命令: git Shortlog -ns --group=author - -group=trailer:共同創作者

    Shortlog 輸出可以使用格式說明符進行聚合,並且「--group」選項可以顯著簡化複雜報告的創建,並且無需額外的排序命令。例如,要建立一個報告,其中包含有關每月接受給定版本的提交數量的信息,您可以指定: 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 以前,要執行類似的操作,需要使用sort 和uniq 實用程式: git log v2.38.0 .. — '格式:%Y -%m' —format='%cd' |排序|優衣庫-c

  • 「cruft packs」機制的功能已擴展,該機制旨在打包未在儲存庫中引用的無法存取的物件(未由分支或標籤引用)。無法存取的物件由垃圾收集器刪除,但在刪除之前會在儲存庫中保留一段時間,以避免競爭情況。 「cruft packs」機制可讓您將所有無法存取的物件儲存在一個套件檔案中,並在單獨的表中顯示每個物件的修改時間數據,該表儲存在擴展名為「.mtimes」的單獨檔案中,以便它們能夠不與總修改時間重疊。

    無法存取的物件在實際刪除之前在儲存庫中保留的時間長度由“--prune=”選項決定」然而,雖然在刪除之前延遲是防止由於競爭條件導致儲存庫損壞的一種相當有效且實用的方法,但它並不是 100% 可靠。為了更容易恢復損壞的儲存庫,新版本透過在「git repack」命令中新增「--expire-to」選項提供了保存遺失物件的功能,該選項允許您指定一個檔案來建立外部所有已刪除物件的副本。例如,要將過去 5 分鐘內未更改的無法存取的物件保存在 backup.git 檔案中,可以使用命令: git repack --cruft --cruft-expiration=5.mines.ago -d --expire -to =../backup.git

  • 在使用部分克隆(稀疏檢出)且存在部分索引(稀疏索引)的區域中搜尋時,顯著提高(高達 70%)「git grep -cached」操作的速度。以前,當指定“-cached”選項時,首先在常規索引中執行搜索,然後在部分索引中執行搜索,這導致在大型存儲庫中搜索時出現明顯的延遲。
  • 在「git push」操作期間將新物件放入儲存庫之前,伺服器對新物件一致性的驗證已加快。透過切換到在檢查時僅考慮已聲明的鏈接,在具有 7 萬個鏈接的測試存儲庫中,其中只有 3% 被推送操作覆蓋,引入的優化可以將檢查時間減少 4.5 倍。
  • 為了防止程式碼中潛在的整數溢出,「git apply」指令限制了可以處理的補丁的最大大小。如果補丁大小超過 1 GB,現在將顯示錯誤。
  • 為了防止潛在的漏洞,當 h2h3 模組與 GIT_TRACE_CURL=1 或 GIT_CURL_VERBOSE=1 選項與 HTTP/2 一起使用時,已進行變更以清除標頭集中不必要的資訊。
  • 當對作為另一個分支的符號連結的分支執行簽出時,「git symbolic-ref HEAD」命令現在顯示目標分支的名稱而不是符號連結的名稱。
  • 新增了對「--edit-description」選項(「gitbranch —edit-description @{-1}」)的 @{-1} 參數的支持,用於編輯上一個分支的描述。
  • 新增了“git merge-tree --stdin”命令以透過標準輸入傳遞參數列表。
  • 在網路檔案系統上,預設會停用監視檔案系統中變更的 fsmonitor 處理程序。

來源: opennet.ru

添加評論