Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 跟踪编码工具和源代码_Git_Svn_Maven_Development Environment_Projects And Solutions - Fatal编程技术网

Git 跟踪编码工具和源代码

Git 跟踪编码工具和源代码,git,svn,maven,development-environment,projects-and-solutions,Git,Svn,Maven,Development Environment,Projects And Solutions,我所从事的项目有一个巨大的存储库(想想SVN),其中包含我们的源代码、DLL依赖项、构建工具(从Qmake到定制GUI构建器)和用户脚本,所有这些都填充到目录树中。当开发人员想要设置用于开发的计算机时,他们会安装VisualStudio和Eclipse,然后从存储库中提取所有必要的开发工具。如果不需要它,它就不会被拉 我们正转向Git获取源代码。它运行得很好,我们对所做的测试感到满意。我的问题是,在我们弄清楚如何处理所有工具之前,我们无法离开我们庞大的存储库。Git目前只包含与每个项目相关的源代

我所从事的项目有一个巨大的存储库(想想SVN),其中包含我们的源代码、DLL依赖项、构建工具(从Qmake到定制GUI构建器)和用户脚本,所有这些都填充到目录树中。当开发人员想要设置用于开发的计算机时,他们会安装VisualStudio和Eclipse,然后从存储库中提取所有必要的开发工具。如果不需要它,它就不会被拉

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

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

这些工具并不经常改变,但有时确实会改变。它们没那么大,但我讨厌它们在Git里的想法。这个项目非常古老,所以我们有很多“助手程序”,用于维护客户可能想要执行的数据或子任务

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

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

    还有另一类软件,旨在帮助执行诸如木偶、厨师、流浪汉等管理任务。这些工具允许通过特殊类型的脚本(配方)来描述环境,然后自动设置所有软件。

    这是一种我有经验的令人不快、不可模仿的技术(它可以工作,但正如所指出的那样是“un”):使用包含相关二进制文件的子模块。@torek,这不是一个坏主意。只要子模块不经常改变,也许这对我们有用。你对如何避免(或尽量减少)所有的“联合国”有什么建议吗?我有一些代码依赖子模块的经验,这是一个痛苦的经历。也许自从我试过以后Git已经长大了…不。。。我逃脱了:-)从那以后,我一直在回避子模块。git子树呢?@Shunya,这看起来和子模块很相似,但有点奇怪。如果有经验的人能告诉我它是否有效,我可以试一试。我的一个问题是Git已经有了一个陡峭的学习曲线。子树似乎比子模块复杂一点,因为子模块可以被视为一个单独的存储库(并且在需要更新引用时从父模块快速更新)。我有很多Git经验,但我的同事没有。我不知道这些工具。Vagrant似乎对构建测试VM特别有用。很高兴知道!我不知道如何才能轻松地将其集成到我们的工作流程中,但我会记住这一点。