2010-09-30 43 views
2

我(主要)使用git從他們的源代碼下載和編譯各種項目,將我的源代碼保存在/usr/local/src中,並在/usr/local/bin中安裝二進制文件。構建源代碼後的清理策略使用例如。 Git

繼構建過程之後,通常使用./configure && make && make install,我留下了大量的垃圾,最終成爲我的本地git存儲庫中的「新」文件。

據我的理解,make clean,make distclean,也可能是(?)./configure clean是可以想象的程序,以垃圾大部分剩餘文件。但是在特定的情況下(見下面的例子),我仍然無能爲力,爲了「保持清潔」而需要做的事情,比如我在安裝之前......

最近的一個例子 - 安裝jscoverage(通過http://svn.siliconforks.com/jscoverage/trunk jscoverage的Git SVN):

該項目的建造指令促使我使用./bootstrap.sh&& make && make install。在這種情況下,編譯和安裝完成後,我嘗試了所有上述清理命令(通過隨機),但沒有設法擺脫一切。

包裝我的問題:有沒有任何強大的,優越的清潔策略,我沒有掌握?在一個典型的工作流程中,你如何處理這個清理問題時使用一個典型的工作流程:1)下載 - 2)編譯 - 3)從上游資源庫中取出更新 - 4)再次編譯 - 等等?

回答

4

還有git clean(「從工作樹中刪除未跟蹤的文件」)。這是一個命令行選項相對較少的簡單命令。請參閱git-clean man page

4

對於自動處理項目(即大多數使用./configure && make && make install的項目),make distclean將使您進入原始分佈tarball狀態。他們不會刪除自動生成的所有內容,因爲這會爲最終用戶引入對附加工具的依賴性。

許多軟件包將提供一個儘可能多地刪除的make maintainer-clean,但仍將保留足夠的空間來構建項目(如果您擁有正確的開發人員工具)。這仍然不會刪除Makefile.in這樣的文件,這是製作Makefile所需的文件。這裏的想法是,./configure && make應該仍然足以構建一切(只要安裝了所有的依賴關係)。

這就是說,我認爲你可能會在這裏問錯誤的問題。如果我不打算爲任何東西保留源代碼,我只需在安裝後刪除源代碼目錄即可。如果我計劃抽取更新和重建,我甚至不會爲make clean打擾:像make這樣的工具的全部重點在於它們只重建項目中發生變化的部分,並且強迫清理失敗。

當我開發自己的項目時,我將任何自動生成的文件標記爲被VCS忽略,所以它不會一直顯示出來。例如,SVN具有svn:ignore屬性,mercurial具有.hgignore文件,git具有.gitignore文件。

+0

+1徹底檢查可用選項 – 2010-10-02 09:06:21

+0

傑克:感謝您提供非常豐富和全面的解釋。我覺得有點開明 - 特別是在閱讀了不需要清理東西的想法之後,如果你打算只保留一個更新和重新構建項目的存儲庫。 – Henrik 2010-10-04 12:36:38

+1

我會給你一個「接受的答案」的投票,如果我能夠給予這些以上的一個,但由於這是不可能的,@dgnorton得到它,因爲他的答案導致了我(最初)尋找的確切結果;即一個未觸及的,清潔的git克隆。 (同樣,我仍在思索你的建議,即沒有必要爲了上述目的而保留回購(僅更新和重建項目)而進行清理。 – Henrik 2010-10-04 12:48:48