【问题标题】:Tracking coding tools along with source code跟踪编码工具以及源代码
【发布时间】:2013-10-02 01:37:27
【问题描述】:

我从事的项目有一个巨大的存储库(想想 SVN),我们的源代码、DLL 依赖项、构建工具(从 Qmake 到自定义 GUI 构建器)和用户脚本都塞进了一个目录树。当开发人员想要设置计算机进行开发时,他们会安装 Visual Studio 和 Eclipse,然后从存储库中提取所有必要的开发工具。如果不需要,则不会拉取。

我们正在迁移到 Git 来获取源代码。它工作得很好,我们对我们所做的测试很满意。我的问题是,在我们弄清楚如何处理我们所有的工具之前,我们不能离开我们庞大的存储库。 Git 目前只包含与每个项目相关的源代码和脚本。我们已将项目分解为更小的 Git 存储库,以便开发人员只克隆必要的项目,但这些工具仍然存在问题。

所以我的问题是:Git 的用户如何管理他们的工具?如果您的构建脚本的旧版本需要 Qmake v1.0,而当前版本需要 Qmake 2.0,您如何处理?知道克隆操作会下载每个旧版本,向存储库添加更小的二进制工具是否合理?我担心新开发人员无法检查旧版本的源代码并进行编译;他们还必须知道需要哪些开发工具。由于我们正在升级开发工具,因此这是一个重要的考虑因素。

这些工具不会经常更改,但有时会更改。它们不是那么大,但我讨厌它们在 Git 中的想法。这个项目已经很老了,所以我们有很多“帮助程序”,用于维护客户可能想做的数据或子任务。

可能的解决方案

  1. Maven - 我没有这方面的经验,但我喜欢定义一个项目“依赖配置”文件的想法,Maven 使用该文件从服务器中提取相关的二进制文件。
  2. 服务器上的共享驱动器,包含所有相关工具。直接在服务器上使用它们 - 缺点是如果服务器离线,所有工作都会停止。也许开发人员必须手动复制他使用的工具?这会很烦人。
  3. SVN 用于我们的工具,Git 用于我们的源代码。但是我们也可以只使用 SVN 来降低复杂性。如果需要,开发人员可以将 Git 用作 SVN 客户端。

有什么想法吗?你是怎么做到的?

【问题讨论】:

  • 我有过一种令人不快的、令人讨厌的技术经验(它有效,但它是“un”,如前所述):使用包含相关二进制文件的子模块。
  • @torek,这不是一个坏主意。只要子模块不经常更改,也许这对我们有用。您对如何避免(或最小化)所有“联合国”有什么建议吗?我对代码依赖的子模块有一些经验,这是一次痛苦的经历。也许自从我尝试之后 Git 已经成长了……
  • 不...我从那种情况中逃脱了:-),从那时起就一直在避免使用子模块。
  • git子树怎么样?
  • @Shunya,这似乎与子模块相似,但更奇怪。也许如果有经验的人可以告诉我它是否有效,我可以试一试。我遇到的一个问题是 Git 已经有一个陡峭的学习曲线。子树似乎比子模块复杂一点,因为子模块可以被视为一个单独的存储库(并且在需要更新引用时从父模块快速更新)。我有很多 Git 经验,但我的同事没有。

标签: git svn maven development-environment projects-and-solutions


【解决方案1】:

还有另一类软件旨在帮助诸如 puppet、chef、vagrant 之类的管理任务。这些工具允许通过特殊类型的脚本(配方)来描述环境,然后自动设置所有软件。

【讨论】:

  • 嗯。我不知道这些工具。 Vagrant 似乎对构建测试虚拟机特别有用。很高兴知道!我不确定如何轻松地将其集成到我们的工作流程中,但我会牢记这一点。
猜你喜欢
  • 2010-11-30
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 2018-05-20
相关资源
最近更新 更多