我們有一個相當龐大的代碼庫,包含大約60000個提交。我們希望在保留git歷史的同時重新格式化所有的.java文件。因此,我們採用的方法是使用git filter-branch --tree-filter重新格式化整個代碼庫,同時保持歷史記錄不變。但是,有幾個問題我無法找到答案。使用git rewrite重新格式化整個代碼庫
當我應用--tree過濾器,並通過重新格式化所有.java文件的根目錄下,重寫發生的命令,但在最後,我看到的所有.java文件暫存區。重寫的每一步都需要提交還是自動發生?
git filter-branch似乎需要一系列的提交,這讓我想知道是否有可能在每次重寫之前保存提交ID並在發生故障時恢復。恢復很重要,因爲整個過程可能需要幾天才能完成(即使在強大的計算實例上)。
爲了重新格式化整個代碼庫,會--index-filter工作嗎?
UPDATE:澄清
- 代碼底座約220萬行Java代碼。不進行git重寫會導致大約10%-12%的代碼庫歸因於錯誤的作者。這大約是20萬行Java代碼,這是我們想要避免的。 Git重寫使得它看起來像做出改變的人以正確的方式做到了。
我不清楚你的意思是「最後......所有的.java文件都在暫存區」。過濾器分支命令實際上結束檢查過濾結果,所以當然,暫存區域是非空的,除非過濾結果爲空。 – torek 2014-09-29 18:45:19
出於好奇,你打算使用什麼樣的格式化工具? Jalopy還是別的? – 2014-09-29 21:24:53
我們解決的工具是從[命令行](http://blogs.operationaldynamics.com)調用Eclipse的代碼格式化程序(實際上是它的修補版本,因爲最新的版本存在對我們不起作用的錯誤) /安德魯/軟件/ java的侏儒/蝕碼格式從 - 命令行)。這有點慢,但是我們看到的其他一些工具讓我們無法理解。 – Karthik 2014-09-29 21:30:38