2010-09-30 46 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