【问题标题】:Cleanup Strategies after Building Source Code using eg. Git使用例如构建源代码后的清理策略。吉特
【发布时间】:2010-09-30 13:14:42
【问题描述】:

我(主要)使用 git 从其源代码下载和编译各种项目,将我的源代码保存在 /usr/local/src 并将二进制文件安装在 /usr/local/bin

按照构建过程(通常使用./configure && make && make install),我留下了很多杂乱无章的东西,最终在我的本地 git 存储库中成为“新”文件。

据我了解,make cleanmake distclean 以及可能还有 (?) ./configure clean 是可以考虑的程序,以便删除大多数剩余文件。但在特定情况下(参见下面的示例),我不知道该做什么才能“保持清洁”,例如我在安装之前...

最近的一个例子——从http://svn.siliconforks.com/jscoverage/trunkjscoverage 安装jscoverage(通过git svn):

该项目的构建说明提示我使用 ./bootstrap.sh && make && make install。在这种情况下,编译和安装完成后,我尝试了所有上述清理命令(随机),但没有设法摆脱所有内容。

结束我的问题:有没有我没有掌握的全能、卓越的清洁策略?在使用诸如 git 之类的 VCS 时,您如何处理此清理问题,在典型的工作流程中,您 1.) 下载 – 2.) 构建 – 3.) 从上游存储库中提取更新 – 4.) 再次构建 – 等等?

【问题讨论】:

    标签: git build makefile


    【解决方案1】:

    还有git clean(“从工作树中删除未跟踪的文件”)。这是一个简单的命令,命令行选项相对较少。请参阅git-clean man page

    【讨论】:

      【解决方案2】:

      对于自动工具项目(即大多数使用 ./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 文件。

      【讨论】:

      • 杰克:感谢您提供了非常翔实和彻底的解释。我觉得有点开明了——尤其是在阅读了您不必清理东西的想法之后,如果您只想保留一个用于更新和重新构建项目的存储库。
      • 如果我能给出一个以上的答案,我会给你一个“接受的答案”投票,但由于这是不可能的,@dgnorton 得到了它,因为他的回答导致了确切的结果我(最初)在寻找;即一个未受影响的、干净的 git 克隆。 (再次,我仍在考虑您的建议,即没有必要仅出于上述目的(仅更新和重建项目)保留回购的目的进行清理。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2013-07-05
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多