73

从 github 项目分发二进制文件的最佳实践是什么?

我能想到:

  • 在您的项目中创建一个 bin 文件夹,您可以在其中保留二进制文件的副本。然而,github 的目的是存储源代码而不是二进制文件 存储大型且定期更改的二进制文件可能会占用大量磁盘空间和带宽?
  • 将二进制文件的副本上传到项目的github 页面,或使用单独的网站来托管您的二进制文件。但是,这并不总是可行的,并且需要更多(手工)工作来使二进制文件保持最新状态,我宁愿让二进制文件自动更新或通过单个操作进行更新。
4

3 回答 3

63

自 2012 年 12 月 11 日起,GitHub 上的下载功能已弃用分发大型二进制文件一文建议使用外部服务:

我们建议将Amazon S3存储与CloudFront配对以通过 CDN 或其他服务(例如SourceForge )提供服务。


但是,从 2d July 2013 开始,您现在可以定义 release

Releases,将软件发送给最终用户的工作流程。
发布是一流的对象,带有变更日志和二进制资产,提供了 Git 工件之外的完整项目历史。可以从存储库的主页访问它们:

主页

  • 版本附有版本说明和下载软件或源代码的链接。
  • 遵循许多 Git 项目的约定,发布与 Git 标签相关联。您可以使用现有标签,也可以让版本在发布时创建标签。
  • 您还可以将二进制资产(例如编译的可执行文件、缩小的脚本、文档)附加到 release。发布后,任何可以查看存储库的人都可以使用发布详细信息和资产。

发布

于 2013-01-23T19:01:14.043 回答
19

我现在很清楚,不要在 github 项目本身中存储二进制文件很重要。因此,您需要将二进制文件存储在其他地方。我遇到的可能的解决方案是:

  • 将二进制文件存储在单独的子模块中(dalores idea)。将它们存储在您的项目github pages中是有意义的,您可以使用这些页面通过 github 托管您的项目网站。
  • 如果您只有几个二进制文件或 zip 文件,您可以通过 Downloads -> Upload a new file 将它们上传到 github。但是,此功能非常有限,您不能将文件放在结构化文件夹中。
  • 对于 java jar 文件,有像Nexus这样的解决方案来管理你的库。
  • 将二进制文件存储在您自己托管的完全独立的站点上
于 2012-05-03T14:27:45.527 回答
2

什么样的二进制文件?二进制文件必须在某个时候来自源代码,对吗?

因此,将构建这些二进制文件的源添加为 git 中的子模块。然后在您的构建过程中首先构建这些二进制文件,然后再构建您的源代码。子模块与您知道有效的源的特定版本保持同步。由于您拥有源代码,因此您还可以更轻松地进行调试。

除非二进制文件是图像等,否则只需存储它们。

如果空间是问题,请使用 bitbucket,因为它们有无限的空间。

于 2012-05-01T16:27:48.910 回答