使用git进行自动工具分发

时间:2015-11-12 15:47:56

标签: git autotools

我一直在关注这个主题,我想我知道我需要的所有内容“我应该将我的autotools生成的文件放在我的回购中吗?”。我同意每个人都说你不应该只需要用wat来生成它们。

虽然我认为这是用于开发目的的正确方法我编写了一个框架,它使用git进行版本控制(在开发分支中)并使用master分支来分发代码。我的问题是,是否有一种简单的方法可以在git中包含autotools将包含在dist包中的相同文件?这个想法是每个克隆回购的用户都可以执行通常的./configure && make && make install过程,而不用担心自动或者东西。鉴于框架的性质,发送tar文件等有点麻烦,并且用户更容易克隆repo以使用它。 也许在git或一些标准的gitignore文件中有一些选项可以做到这一点。

非常感谢!

4 个答案:

答案 0 :(得分:3)

许多人会坚持不应该检查autotools生成的文件。但是,随着git变得无处不在,如果您使用最新的稳定自动工具生成文件,我不会看到这样做的危害。事实上,我建议你加入它们:

正如您所指出的,这允许某人简单地签出项目并对其进行配置 - 否则,您需要为不了解自动工具的人提供.tar[.bz2]快照......他们也不应该。 autotools的整个想法正在给开发人员带来负担最小化最终用户的要求和努力

例如,使用./configure ...make [install]在命令行上传递shell变量就足够了。

如果某人确实想要重建生成的文件,则应确保autoreconf -fvi之类的内容足够。如果需要更复杂的步骤,请提供autogen.sh脚本。执行此步骤的任何人都必须安装自动工具,并且可能更好地理解它们的工作方式 - 例如,维护者模式'熟练程度。

答案 1 :(得分:2)

我不会提交任何自动生成的文件。只需要求您的用户在autoreconf --install

之前运行./configure && make

如果有任何工具抱怨缺少目录,那么在所有这些之前你可能必须mkdir m4

答案 2 :(得分:0)

  

我应该将我的autotools生成的文件放在我的仓库吗?

你可以做到这两点。

master分支检入所有自动工具生成的文件,这样人们就可以克隆存储库并运行./configure && make && make install而无需运行autoconf等。 然后你有另一个分支,比如说development,它是“干净的”并且没有签入文件。

这种方法确实意味着你最终会得到两个需要与merge进行同步的分支,这只是一点维护开销,但是几乎不可能得到任何合并冲突,因为差异只是存在或不存在的文件

答案 3 :(得分:-2)

永远不要将自动工具生成的文件放入存储库中。

相反,开发人员应在克隆存储库后运行autoreconf -i。这将为他们提供所有适当的文件,并与他们在开发计算机上安装的autoconf,automake和libtool的版本兼容并与之兼容。

当需要生成发行版时,请不要通过github进行创建,而要进行make dist,您将获得正确创建所有中间文件的发行版。