git - 我应该将 Autotools 生成的哪些文件保存在版本控制存储库中?

标签 git version-control autotools

我是 autotools 的新手,我正在从事一个 C 项目。我想将我的项目添加到 git 存储库。我需要在版本控制系统中跟踪由 autotools 生成的哪些文件,哪些应该忽略?

最佳答案

您不应将任何非手动编辑的文件置于版本控制之下。这意味着版本控制系统应该忽略任何生成的文件。我基本上将以下内容置于版本控制之下:

  • configure.ac
  • Makefile.am
  • AUTHORSNEWS等文档文件
  • Makefile.am 在子目录中

为了解决 Scharron 提出的“准备安装”版本的问题,有些人在项目的根目录中包含一个脚本,称为 bootstrapautogen.sh ,当你检查一个新的副本时,你运行一次。你可以在我的一个项目中看到一个例子 here .对于一个更简单的项目,您的 autogen.sh 实际上只需要包含一行:

autoreconf --install || exit 1

尽管有些人喜欢在 autogen.sh 的末尾自动运行 ./configure

为什么不在版本控制中跟踪所有生成的文件?因为它们的内容取决于您构建的机器、生成它们所使用的自动工具的版本以及月相。任何时候这些更改中的任何一个,生成的 autotools 文件都会更改,并且您的提交中会出现很多垃圾。

此外,任何为了构建代码而将您的代码从版本控制中 check out 的人都应该安装了适当的开发工具,因此您真的不必担心人们会因为缺少自动工具而遇到麻烦。

VonC 所说的关于带有 configure 文件以生成 Makefile 的 C 项目对于 源代码分发 是正确的(.tar.gz 当您输入 make dist) 时得到的文件,但不一定是从版本控制中新 check out 的副本。

关于git - 我应该将 Autotools 生成的哪些文件保存在版本控制存储库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3290908/

相关文章:

Git 分支 - 如何拥有一个没有子模块的干净发布分支

git - 无法通过SSH git fetch

version-control - 自定义开源项目源代码控制的最佳实践

python - libtool python 模块链接和安装

linux - 使用 configure 识别 Raspberry Pi 主机

mysql - 使用 Autotools 执行 SQL 语句

android - 将特定修订版 Github 项目的插件添加到 Cordova 项目

用于开发的 git 和用于生产服务器的 svn

git - 将未跟踪的文件显示为 git diff

c - 注释中的 "@(#)<filename>"是什么意思?