Git 2.52 的新特性:指令、效能與安全性

  • 新增指令:git last-modified、git repo 以及 git refs 的常用操作的補充。
  • 改進維護:git 維護中的幾何任務和多項效能最佳化。
  • 安全性改進正在進行中:邁向 SHA-1/SHA-256 互通性的第一步,並在下一個主要版本中將預設值變更為「main」。
  • 更多實用工具:改進了布隆過濾器、稀疏檢出清理功能,以及提交圖、暫存和差異樹中的新功能。

git 2.52

Git 2.52 現在可用 作為這款流行的分散式版本控制系統的穩定更新。該版本包含 新增功能、維護調整和效能改進 這是 94 位以上合作者共同努力的成果,其中 33 位是首次參與此計畫。

其中最顯著的變化包括用於瀏覽程式碼庫的新子命令、更聰明的維護工作流程以及向 SHA-256 過渡的進度。所有這些都以一致且低調的方式呈現。 實用方法 管理各種規模的儲存庫。

用於瀏覽倉庫的 git 2.52 新指令

最引人注目的新奇之處是 git last-modified旨在有效地獲取每個路徑上的最新提交。在條目眾多的倉庫中,這種方法避免了重複的歷史遍歷,並且可以… 比使用 ls-tree + log 鍊式呼叫快好幾倍根據內部測試,在實際場景中,將時間從秒級縮短到毫秒級。

引擎 last-modified 它是在 GitHub 上以這個名稱經過數年開發的。 責備樹自 2012 年以來,他們一直在推卸責任,將責任歸咎於樹木本身。隨後, GitLab工程師 他們完善了補丁集,使其能夠整合到 Git 2.52 中,儘管仍有一些功能需要添加,例如: 磁碟格式以快取結果 參考之前的執行情況。

實驗品也到了。 git repo一個用於查詢儲存庫功能的繖形工具。 git repo info 你能判斷它是不是嗎? o 物件和引用的格式,以及與 git repo structure 已列印 結構統計 (提交計數、樹、blob、分支、標籤等)。此外, info 包含縮寫選項 -z 並且有能力 報告對象格式 用過的。

對於那些從事低階工作且有推薦人的人來說, git refs 蘇馬 git refs list (別名 git for-each-ref)和 git refs exists (類似於 git show-ref --exists它們並不具備前所未有的能力,但是 他們集中進行頻繁操作 單一命令下的多個引用。

小巧但實用:現在 git cmd --help-all 它也有效 在儲存庫之外這樣一來,無需進行任何初始化即可輕鬆存取全域幫助。

維護和性能

Git 2.52 引進了一個任務 geometricgit maintenance 它盡可能避免一次性重新打包,並減少對不可達物件的清理頻率。該任務檢查包以形成一個 以物體數量劃分的等比數列 並在適當情況下進行壓實,無需修剪;如果操作最終會得到一個單獨的包裝,則執行 git gc 完全用於合併和精簡。

就速度而言,已經取得了顯著進步: git describe 現在它使用優先權隊列,並獲得了大約 100% 的收益。 30% 性能; git remote rename 優化引用重命名; git ls-files 它使指數在更多情況下保持分散; git log -L 它避免了合併過程中某些樹級差異,從而加快了分析速度;並且該庫 xdiff 它融合了多項優化措施, 差異比較和合併功能得到改進 在文件層級。

安全性與 Git 3.0 路線圖

從 SHA-1 到 SHA-256 的過渡仍在繼續。 SHA-256 的首批元素出現在 2.52 版本。 演算法間的互通性目標是讓具有不同雜湊值的倉庫能夠無縫交換變更。這目前還處於基礎階段,但為下一個主要版本奠定了基礎。

Git 3.0 計劃進行的另一項變更是將預設分支命名為「main」。這項變更從 2.52 版本開始就已經包含在內了。 線索和幫助訊息 為了促進這種改變,任何想要領先一步的人都可以使用該標誌進行編譯。 WITH_BREAKING_CHANGES 測試計劃行為。

它還可以選擇性地包含受保護的 Rust 程式碼。 WITH_RUST它實現了變長整數的編碼/解碼。在這個版本中,它不是必需的,Git 2.52 無需 Rust 編譯器也能工作,但是… 預計 Git 3.0 將需要它 並擴展重寫後的內容。

工作流程和可用性方面的改進

使用 更改路徑的布隆過濾器一種機率過濾器,可透過縮小路線範圍來加快行程速度。現在即使在以下情況下也會使用它們: 路徑規範 它包含 部分通配符 (例如, foo/bar/*/baz)以及在有多條感興趣路徑的場景中,有利於諸如以下查詢: last-modified 以及一些歷史記錄命令。

git sparse-checkout 新增操作 clean 為了解決當感興趣區域的定義發生變化時,某些文件會被排除在選擇範圍之外的情況,只需一步即可完成。 清理工作樹 去除不需要的成分。

其他有用的新增內容:新變數 commitGraph.changedPaths 預設啟用 --changed-paths en git commit-graph; 選項 stash.index 這樣 git stash pop/apply 其行為如同使用以下方式呼叫: --index; git diff-tree 收到 --max-depth; git fast-import ahora 管理已簽署標籤,而 git repo info 除了支援之外,還要學習如何報告物件格式。 -z.

Git 2.52 可用

可以從以下位置下載 Git 2.52 的源代碼: 官方網站 需要本地編譯。應該會在未來幾天或幾週內完成。 主要發行版的儲存庫 歐洲的 GNU/Linux(Debian、Ubuntu、Fedora、openSUSE、Arch 等)已經有了像 Homebrew、MacPorts 或 Chocolatey 這樣的管理工具,打包時間也與往常一樣。

透過此次發布,Git 加強​​了其日常操作。 更快更實用的指令更精簡的維護流程以及向 SHA-256 過渡的首批建置模組現已作為預設分支「main」發布。升級用戶現在可以進行測試。 git last-modified新的 git repo幾何任務 git maintenance 以及其他一些調整,這些調整無需大動乾戈,就能讓小型和大型儲存庫的體驗都更加流暢。

GitLab Duo 代理
相關文章:
GitLab Duo Agent 平台:與 AI 代理商協作的 DevSecOps 新時代