我想让其他人更容易在我的存储库上工作。但是,由于某些已编译的依赖项大小超过 100mb,因此我无法将它们包含到存储库中。Github 拒绝这些文件。
处理大型依赖项二进制文件的最佳方法是什么?在 Windows 下从源代码构建库并不容易,而且需要数小时。我不希望每个开发人员都在这个过程中挣扎。
我想让其他人更容易在我的存储库上工作。但是,由于某些已编译的依赖项大小超过 100mb,因此我无法将它们包含到存储库中。Github 拒绝这些文件。
处理大型依赖项二进制文件的最佳方法是什么?在 Windows 下从源代码构建库并不容易,而且需要数小时。我不希望每个开发人员都在这个过程中挣扎。
我最近一直致力于将 Ivy ( http://ant.apache.org/ivy/ ) 与 C++ 二进制文件一起使用。基本思想是为每个构建组合构建二进制文件。然后,您会将每个构建组合压缩到一个名称类似于 mypackage-windows-vs12-x86-debug.zip 的文件中。在您的 ivy.xml 中,您将每个 zip 文件与一个配置相关联(例如:windows-vs12-x86-debug)。然后,您将这个包含多个 zip 文件的包发布到 Ivy 存储库。您可以自己托管存储库,也可以尝试上传到现有的常春藤存储库。您将为每个依赖项创建一个 zip 文件包,而 ivy.xml 文件将描述所有包之间的依赖项链。
然后,您的开发人员必须设置 Ivy。在他们的 ivy.xml 文件中,他们会将您的包列为依赖项,以及他们需要的配置(例如:windows-vs12-x86-debug)。他们还需要在他们的构建中添加一个常春藤解析/检索步骤。Ivy 将为您的包和您的包所依赖的所有内容下载 zip 文件。然后,他们将需要在其构建中设置解压缩和移动任务,以提取您提供的二进制文件,并将它们放在构建期望的位置。
Ivy 是一个很酷的工具,但它绝对是为 Java 而不是 C++ 简化的。当一切都设置好时,它非常棒。然而,根据我作为一个完全不熟悉 DevOps 的人的经验,将其集成到 C++ 构建中一直是一个挑战。我发现最简单的方法是创建简单的 ant 任务来执行所需的 ivy 操作,然后在需要时使用我的“常规”构建系统 (make) 调用这些 ant 任务。
所以我还应该提到,我考虑使用 Ivy 的原因是我在无法更改系统文件的公司环境中实现它。如果您和您的开发人员可以做到这一点,那么使用 RPM/APT 系统可能会更好。您将设置一个 repo 并让您的开发人员将您的 repo 添加到适当的 RPM/APT 配置文件中。然后他们会运行类似的命令,sudo apt-get install mypackage
而 apt-get 会完成在正确位置下载和安装正确文件的所有工作。我不知道这在 Windows 上如何工作,也许有人创建了一个 Windows RPM/APT 客户端。