【问题标题】:Should I push Makefile.in to git repository?我应该将 Makefile.in 推送到 git 存储库吗?
【发布时间】:2015-06-28 01:33:28
【问题描述】:

使用 autotools 作为构建系统,我们是否应该将 Makefile.in(由 automake 生成)与分发一起发布?运行 make dist 会将 Makefile.in 放入存档中,所以我应该将 Makefile.in 推送到我的 git 存储库吗?

【问题讨论】:

  • 我相信对此的看法不同,但我倾向于“不”。问题是谁应该运行自动工具,我认为最终应该在什么时候运行。
  • 这个问题定义不明确。不,你绝对不应该把 Makefile.in 放在你的 git repo 中。是的,您绝对应该将它包含在您的发行版中。作为推论,你不应该使用 git 作为你的分发机制。 (这就是 tarball 和 rpm 的用途。)

标签: makefile autotools automake build-system


【解决方案1】:

对此没有明确的答案,只有强烈的意见。

传统观点——我认为我有理由这样称呼它,因为它是 Autoconf 和 A​​utomake 发明的有效观点——是您应该签入生成的文件。这样做的理由是双重的。

首先,它减少了开发的依赖:您可以签出一个项目并运行configure,而无需安装autoconf 和朋友。这在 Linux 之前的糟糕的旧时代尤其重要,当时没有默认安装这些工具,而且包管理器只是一个梦想。

其次,因为大多数源代码更改不涉及对配置的更改,这减少了不同开发人员可能安装了不同版本的工具的可能错误来源。

签入方法本质上依赖于AM_MAINTAINER_MODE 的使用。事实上,这就是发明这种模式的原因。

最终出现了不同的观点,即不应签入此类文件。我认为这样做的理由也是双重的。

首先,它更干净。我敢肯定,人们可以找到任何数量的劝告,说只有可编辑的文件才应该提交给源代码管理。而且,这是有道理的——可以派生派生文件;在源代码管理中,它们只是杂乱无章。

其次,生成的文件在源代码树中过时的情况并不少见。发生这种情况是因为开发人员忘记启用维护者模式。只签入源文件不仅可以避免这种情况,还可以让其他开发人员从中发现任何可能的错误。

这种方法几乎需要避免AM_MAINTAINER_MODE。

总而言之,没有正确的答案。根据我的观察,有些人更喜欢上述论点之一;但两者都不是真正的结论,因为这两种方法在很长一段时间内都适用于多个严肃项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2013-07-04
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多