我应该将Makefile.in推送到git存储库吗?

我应该将Makefile.in推送到git存储库吗?,makefile,autotools,automake,build-system,Makefile,Autotools,Automake,Build System,使用autotools作为构建系统,我们是否应该将Makefile.in(由automake生成)与发行版一起发布?运行makedist将Makefile.in放入存档,那么我应该将Makefile.in推送到我的git回购吗?对此没有明确的答案,只是持有强烈的观点 传统的观点——我认为我有理由这样称呼它,因为它是Autoconf和Automake发明的有效观点——是你应该签入生成的文件。这样做的理由有两个 首先,它减少了对开发的依赖:您可以签出项目并运行configure,而无需安装autoc

使用autotools作为构建系统,我们是否应该将
Makefile.in
(由automake生成)与发行版一起发布?运行
makedist
Makefile.in
放入存档,那么我应该将
Makefile.in
推送到我的git回购吗?

对此没有明确的答案,只是持有强烈的观点

传统的观点——我认为我有理由这样称呼它,因为它是Autoconf和Automake发明的有效观点——是你应该签入生成的文件。这样做的理由有两个

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

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

签入方法基本上依赖于使用
AM\u maintenancer\u模式
。事实上,这就是这种模式被发明的原因

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

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

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

这种方法几乎需要避免
AM\u维护者\u模式


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

我相信对此观点不同,但我倾向于“否”。问题是谁应该运行自动工具,我认为最终应该在什么时候运行。这个问题的可能重复之处定义不清。不,你绝对不应该把Makefile.in放在你的git repo中。是的,你绝对应该把它包括在你的发行中。因此,您不应该使用git作为分发机制。(这就是柏油球和RPM的用途。)