發布分散式原始碼控制系統Git 2.31

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

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

  • 新增了「git Maintenance」命令,該命令允許您在不支援 cron 的系統上執行定期工作。 例如,使用新命令,您可以安排儲存庫打包程序定期運行,這樣在運行各種命令時就可以自動執行打包,而不必等到儲存庫被鎖定。 「git Maintenance」命令可讓您執行最佳化和操作,以在背景維護儲存庫的最佳結構,而不會阻塞互動式會話 - 每小時一次,主動從遠端儲存庫下載新物件並更新儲存庫包含提交圖的文件,並且打包存儲庫的過程每天晚上都會開始。
  • 新增了對在磁碟上維護包檔案的反向索引 (revindex) 的支援。 回想一下,Git 以物件的形式儲存所有數據,這些數據位於單獨的檔案中。 為了提高使用儲存庫的效率,物件另外放置在套件檔案中,其中資訊以物件流的形式呈現,這些物件相互跟隨(使用 git fetch 和 git push 傳輸物件時使用類似的格式)命令)。 對於每個包文件,都會建立一個索引文件 (.idx),它允許您使用物件標識符快速確定包文件中存儲給定對象的偏移量。 Git 2.31 中引入的反向索引 (.rev) 旨在優化根據套件檔案中物件的放置資訊來確定物件標識符的過程。

    以前,這種轉換是在解析套件檔案時動態執行的,並且僅儲存在記憶體中,這不允許重複使用類似的索引,並且每次都強制產生索引。 建立索引的操作歸結為建立一個物件位置對陣列並按位置對其進行排序,這對於大型套件檔案來說可能需要很長時間。

    例如,使用直接索引顯示物件內容的操作比未對位置到物件資料建立索引的顯示物件大小的操作快 62 倍。 使用反向索引後,這些操作開始花費大約相同的時間。 反向索引還允許您在執行獲取和推送命令時透過直接從磁碟傳輸現成的資料來加速物件發送操作。 預設情況下,不會建立反向索引;要產生反向索引,您需要啟用「git config pack.writeReverseIndex true」設置,然後使用「git repack -Ad」命令打包儲存庫。

  • 新增了基於提交圖文件格式外觀的效能最佳化,用於優化對有關提交的資訊、有關提交產生編號的新資料的訪問​​,可用於加速提交的其他操作。
  • 新增了用於重新定義新儲存庫中預設使用的主分支名稱的選項(init.defaultBranch 設定)。 當存取外部儲存庫時,git 會嘗試檢查 HEAD 指向的分支,即如果外部伺服器預設使用「main」分支,那麼「git clone」操作將嘗試在本地檢出「main」。 Git 2.31 現在支援這種類型的空白儲存庫簽出。 例如,在向其添加第一個補丁之前在本地克隆新儲存庫時,本地副本現在將包含在外部伺服器上設定的預設上游名稱。
  • 在「git rev-list」指令中新增了 --disk-usage 選項,以提供物件大小的摘要。
  • 考慮到合併後端即將發生的變化,重命名偵測已顯著最佳化。
  • 舊版 PCRE1 正規表示式函式庫的支援已停止。
  • 無論散列演算法如何,都可以強制禁止使用縮短的連結。 透過將值「no」指派給 core.abbrev 參數來啟用禁止。
  • 在「git rev-parse」指令中新增了「--path-format=(absolute|relative)」選項,以明確指定是否應輸出相對路徑或絕對路徑。
  • Bash 完成腳本可以輕鬆地為您自己的「git」子指令新增完成規則。
  • 在「git bundle」指令中新增了 --stdin 選項,以從標準輸入流讀取引用。
  • “git log”命令中新增了一個新選項:“--diff-merges=” 」
  • 在“git ls-files”命令中新增了“--deduplicatecan”選項以消除重複輸出。
  • 新增了新的遮罩以排除一系列提交 - ” ^!” 和 ” ^- 」
  • 在「git range-diff」指令中新增了「--left-only」和「--right-only」選項,以僅顯示所比較範圍的一側。
  • 在「git diff」和「git log」指令中新增了 --skip-to= 選項「和」——旋轉至= » 跳過或移至起始路徑的末端。
  • 在「git difftool」指令中新增了「--skip-to=」選項» 從隨機路徑恢復中斷的會話。
  • 行為準則定義了解決開發人員之間衝突情況的基本原則,已更新至 2.0 版(先前使用的是 1.4 版)。

    來源: opennet.ru

添加評論