我从事的项目有一个巨大的存储库(想想 SVN),我们的源代码、DLL 依赖项、构建工具(从 Qmake 到自定义 GUI 构建器)和用户脚本都塞进了一个目录树。当开发人员想要设置计算机进行开发时,他们会安装 Visual Studio 和 Eclipse,然后从存储库中提取所有必要的开发工具。如果不需要,则不会拉取。
我们正在迁移到 Git 获取源代码。它工作得很好,我们对我们所做的测试很满意。我的问题是,在我们弄清楚如何处理我们所有的工具之前,我们不能离开我们庞大的存储库。Git 目前只包含与每个项目相关的源代码和脚本。我们已经将项目分解为更小的 Git 存储库,以便开发人员只克隆必要的项目是明智的,但我们仍然存在这些工具的问题。
所以我的问题是:Git 的用户如何管理他们的工具?如果您的构建脚本的旧版本需要 Qmake v1.0,而当前版本需要 Qmake 2.0,您如何处理?知道克隆操作会下载每个旧版本,将更小的二进制工具添加到存储库是否合理?我担心新开发人员无法检查旧版本的源代码并进行编译;他们还必须知道需要哪些开发工具。由于我们正在升级开发工具,这是一个重要的考虑因素。
这些工具不会经常改变,但它们有时会改变。它们不是那么大,但我讨厌它们在 Git 中的想法。这个项目很老,所以我们有很多“帮助程序”,用于维护客户可能想要做的数据或子任务。
可能的解决方案
- Maven - 我没有这方面的经验,但我喜欢定义一个项目“依赖配置”文件的想法,Maven 使用该文件从服务器中提取相关的二进制文件。
- 服务器上的共享驱动器,里面装满了所有相关的工具。直接在服务器上使用它们 - 缺点是如果服务器离线,所有工作都会停止。也许开发人员必须手动复制他使用的工具?这会很烦人。
- SVN用于我们的工具,Git 用于我们的源代码。但是我们也可以只使用 SVN 来降低复杂性。如果需要,开发人员可以将 Git 用作 SVN 客户端。
有任何想法吗?你怎么做呢?