我(大多数情况下)使用git从源代码下载和编译各种项目,将我的源代码保存在/usr/local/src
并在/usr/local/bin
中安装二进制文件。
遵循构建过程,通常使用./configure && make && make install
,我留下了很多内容,最终成为我本地git存储库中的“新”文件。
据我了解,make clean
,make distclean
以及可能还有(?)./configure clean
是可以想到的程序,以便删除大多数剩余文件。但是在特定的情况下(见下面的例子),为了“保持干净”,我不知道要做什么,比如我在安装之前......
最近的一个例子 - 从http://svn.siliconforks.com/jscoverage/trunk jscoverage安装jscoverage(通过 git svn ):
此项目的构建说明促使我使用 ./ bootstrap.sh && make && make install
。在这种情况下,在编译和安装完成后,我尝试了所有上述清理命令(随机),但没有设法摆脱一切。
回答我的问题:我还没有掌握任何强大,优越的清洁策略吗?如何在典型的工作流程中使用VCS(例如git)时如何处理此清理问题,其中1.)下载 - 2.)构建 - 3.)从上游存储库中提取更新 - 4.)再次构建 - 依此类推?
答案 0 :(得分: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
文件。
答案 1 :(得分:4)
还有git clean
(“从工作树中删除未跟踪的文件”)。这是一个命令行选项相对较少的简单命令。请参阅git-clean man page。