vy3*_*y32 10 automake autoconf software-distribution github
我们最近从subversion转移到git,然后转到Github,用于几个开源项目.Github很不错,因为它提供了很多功能.我特别喜欢的一件事是能够下载标签zip
或.tar.gz
文件.
不幸的是,Github最近停止了下载.这应该不是问题,因为能够下载标签.然而,在过去我们没有把Makefile
,configure
脚本或任何其他Autoconf生成的文件到回购,因为他们得到很多的冲突,当人们合并.
处理这个问题的正确方法是什么?
bootstrap.sh
文件,并告诉人们运行该文件?make dist
并将其放入回购中?谢谢
Psy*_*aut 15
make dist
via GitHub Releases 的输出您的第一个选择 - 将Autoconf和Automake生成的文件放入存储库 - 不是一个好主意.将生成的文件存储在源代码管理中几乎没有用处.在这种情况下,它将使用许多不必要且可能相互冲突的提交来污染您的历史记录,特别是如果并非所有贡献者都使用相同版本的Autotools.你的第三个选项 - 检查输出make dist
- 是一个坏主意,原因与第一个选项完全相同.
你的第二个选择 - 添加一个调用Autoconf和Automake生成configure
脚本的"bootstrap" 脚本 - 也是一个坏主意.这违背了Autotools的全部目的,即使您的源可以跨系统移植 - 包括那些Autotools不可用的系统!(如果有人想在他们没有root访问权限的机器上构建和安装你的软件,以及没有安装GNU Build System的地方会发生什么.一个bootstrap脚本不会帮助他们,因为他们是首先需要进行Autotools的本地安装以及可能的所有依赖项.)
释放使用Autotools的代码的正确方法是生成一个tarball make dist
(或者更好make distcheck
,因为这也将运行测试并进行其他健全性检查),然后在源存储库以外的地方发布此tarball .
从2013年4月起,您的原始问题表明GitHub已停止下载页面.但是,在2013年7月,GitHub添加了"Releases"功能,不仅可以预先封装源标签,还可以将任意文件附加到每个版本.所以在GitHub上,Releases页面是你应该发布make dist
tarball的地方(最好也是它们的独立GnuPG签名).
$ git tag 1.0 # Also use -s if desired
$ git push --tags
$ make dist # Alternatively, 'make distcheck'
如果您不想使用GitHub版本,那么正如之前的答案所指出的那样,您应该将tarball上传到其他地方,例如您自己的网站或FTP站点.从项目中添加指向此存储库的链接,README.md
以便用户可以找到它.