前幾天公佈了 Git 2.50 專案新版本發布, 引進 600 多項變革 由一個活躍的社區推動,這次包括 98 名開發人員,其中包括 35 名新貢獻者。
Git 2.50 新版本的亮點是整合了新的命令(git-diff-pairs),清理、過濾和維護的新功能,用 ORT 替換了遞歸合併引擎,以及性能改進和錯誤修復。
Git 2.50關鍵新功能
在 Git 2.50 的新版本中,最重要的新功能之一是 優化所謂的「cruft packs」處理, 也就是說,包含無法存取或未被分支或標籤引用的物件。傳統上,Git 將這些物件儲存在一個大型的套件檔案中,這在重新打包包含大量此類專案的儲存庫時可能會導致效能問題。
隨著新版本的推出, Git 允許你將這些垃圾包拆分成幾個較小的文件,從而減少磁碟使用量並提高批次操作的輸入/輸出效能。此外,並輸入選項 –combine-cruft-below-size,這允許 更靈活地將小包組合成一個 與先前的 –max-cruft-size 選項相比,它不會對合併檔案大小施加限制。此新功能對於孤立物件分散在多個套件中的項目尤其有用。
針對大型儲存庫的另一項改進是 實驗支持 增量更新 MIDX指數 , 哪一個 它們將有關物件的資訊儲存在不同的層中 使用點陣圖文件,可以在新增提交時更快地進行更新。對於需要快速索引操作且無需完全重建元資料的大型儲存庫而言,這項改進至關重要。
用 ORT 完全取代遞歸合併引擎
Git 2.50 引入了一項重大變化 永久刪除遞歸融合引擎 傳統。相反, ORT 的使用得到鞏固一 更現代、更易於維護、更有效率的融合引擎。 ORT 不僅提供更精確的衝突分析,還允許您在不產生額外物件的情況下驗證合併是否可行。此外,merge-tree 指令現在包含一個 –quiet 選項,可用作靜默合併檢查器,而無需修改儲存庫。
gitt-diff-pairs:可擴展性問題的解決方案
程式碼審查無疑是現代協作開發的支柱之一,而修訂版本之間的差異或差異在此過程中起著至關重要的作用。隨著 Git 2.50 的到來,引入了一個專為可擴展性而設計的解決方案:新的 git-diff-pairs 命令。
傳統上,要比較兩個修訂版本,可以使用以下命令:
git diff HEAD~1 HEAD
這將產生一個包含所列修訂版本之間所有變更的完整補丁。雖然這在許多情況下都很有效,但在處理大量修改文件時可能會出現效能問題。
這就是為什麼 git-diff-pairs 專門設計用於直接從 git diff-tree 的輸出接收原始輸入,並高效、準確地生成相應的補丁。
使用方法非常簡單:
git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z
此命令會取得提供的 blob 對並產生精確的 diff 輸出,保留上下文資訊並允許將工作拆分成更小的批次。這為平行處理打開了大門,提高了資源效率,並促進了 GitLab 等基於 diff 的工具的可擴展性。
清潔、過濾和維護的新功能
Git 2.50 包含幾個旨在改善儲存庫維護的附加工具:
- 命令已新增 git reflog drop,它允許您完全刪除特定分支的 reflog,非常適合在您不再需要維護先前的引用時清理您的工作歷史記錄。
- 選項 -篩選 cat-file –batch 現在可在 git 中使用,讓您可以按物件類型篩選結果。
此外,也強調了幾項內部最佳化:
- 改進符號連結的使用,具有前綴快取和減少冗餘檢查。
- 刪除文件和測試腳本中的 Perl 依賴項,用 shell 函數或 C 實作取代它們,使它們更容易在具有極簡配置的系統上進行編譯。
- 包含控制器 使用者差異 用於分析 .ini 檔案中的差異。
- 提高了 git send-email 命令與 Outlook 等 SMTP 伺服器的兼容性。
最後,如果您有興趣了解更多,可以查閱詳情 以下鏈接。