Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
在企业版github中模拟tfs样式的变更集_Github_Tfs_Changeset - Fatal编程技术网

在企业版github中模拟tfs样式的变更集

在企业版github中模拟tfs样式的变更集,github,tfs,changeset,Github,Tfs,Changeset,我有三个环境;在我们使用Team Foundation Server的前一个模型中,我们将有三个代码分支来匹配这三个环境中的每一个。p> 开发人员将在本地工作,当他们的代码完成后,他们会将其签入dev分支。签入时,TFS会自动创建一个称为变更集的东西。这个签入将启动文件到代码中的构建,然后将其部署到开发环境中 当开发人员对dev中的代码感到满意时,他们只会将变更集合并到测试分支中。他们会列出所有未合并到测试中的可用变更集的完整列表,他们会选择自己的变更集并将其检查到测试分支中。同样,这将启动构建

我有三个环境;在我们使用Team Foundation Server的前一个模型中,我们将有三个代码分支来匹配这三个环境中的每一个。p> 开发人员将在本地工作,当他们的代码完成后,他们会将其签入dev分支。签入时,TFS会自动创建一个称为变更集的东西。这个签入将启动文件到代码中的构建,然后将其部署到开发环境中

当开发人员对dev中的代码感到满意时,他们只会将变更集合并到测试分支中。他们会列出所有未合并到测试中的可用变更集的完整列表,他们会选择自己的变更集并将其检查到测试分支中。同样,这将启动构建,输出文件将部署到测试中

一旦QA对更改满意,开发人员就会将此更改集合并到prod分支中。启动构建,文件将部署到临时区域。开发人员和QA会将这些文件升级到prod

所有这些都允许多个开发人员使用这种变更集思想处理相同的文件。当一个特定的变更集(或一组变更集)被合并到另一个环境中时,只有这些变更才会被合并

在我对git相对较新的接触中,我似乎找不到从一个分支到另一个分支选择特定的“拉请求”(我假设它类似于TFS变更集)的方法。当我尝试从一个分支向另一个分支发出拉请求时,它不仅要拉入我的拉请求,还要拉入其他开发人员在较低分支中发出的每个其他拉请求。什么是实现这一点的神奇方法


注意:不幸的是,我们没有“发布”的概念。我们有五个scrum团队在一个超过200页的网站上工作。每个scrum团队都有自己的sprint,可以在sprint期间发布多个scrum故事。我们内部只有一个开发环境、一个测试环境和一个PROD环境。这五个scrum团队不仅使用我们的环境,而且其他各种团队也使用这些开发/测试/生产站点与我们销售的应用程序进行集成,并进行客户帐户管理和购买。我们不能改变这一基础设施

注意:这不是为了讨论这种“变更集”方法是否正确。这是一个如何在github/git中实现这种行为的问题


注意:我们是一组基于scrum的敏捷团队。我们从故事开始工作。我们的25多名开发人员组成的大型团队可以在任何时候积极开发多达60个故事。当一个故事准备好用于prod时,我们将其作为一个原子单元推广到prod环境中。因此,将变更集视为一个故事。

您以前的行为是不正常的。虽然并不罕见:

在Git中,您最有可能要做两件事。第一个是遵循Git流程:

一旦有了这些,您就可以考虑为二进制文件而不是源文件创建部署管道。您应该从MASTER进行构建,并且该构建将贯穿您的环境。很高兴在这里和离线讨论。

我有两个想法:

  • 不要这样做。相反,您应该关注git流。这些都是很好的解释。在其核心,git flow是分支的命名约定,因此它实际上根本不与git绑定。本质上,您拥有每个开发人员或开发团队所使用的功能分支。一旦完成一项功能,它们就会合并到
    develope
    develop
    是“完成特性”——不是“完成特性”,而是“特性完成”。当我们认为是发布的时候,我们会转向一个新的
    release/someversion
    分支(名称与发布名称相匹配),然后与QA合作来强化发布。
    release/someversion
    分支上的提交只是错误修复。一旦它能够很好地部署,我们将
    master
    分支升级到发布分支,并将其投入生产<代码>母版然后表示生产中的内容。在部署时,我们还将
    release/someversion
    合并到
    develope
    中,这样bug修复就进入了开发的主线。然后,项目经理/产品所有者可以将
    develope
    分支视为“最新的”,开发人员可以继续使用其功能分支,直到功能完成。(提示,将功能缩小,例如一小时或一天。功能不是发布版。)
  • 那为什么这比你以前做的更好呢?如果该特性已经完成,准备好让QA开始使用它,那么它就足够成为下一个版本的一部分了。挑选和选择彼此周围的功能将导致你陷入非常微妙和不可预测的错误。由于您在每一步都进行合并,因此有可能合并不正确,从而产生错误。现在,您还可以在每个步骤中创建独特的产品,这样您就可以使用与在开发和测试中审查的完全不同的一组功能开始生产。(这会造成不良后果吗?询问药剂师这些药物在一起服用时是否相互作用。)

    Git flow非常适用于协调良好、不频繁、更大版本的Cadence。随着您越来越接近连续交付,此仪式将阻碍您。此时,您可以选择切换到或类似的较轻的命名约定

  • 如果你真的,真的,真的(见上面“你不应该这样做”的评论)确信你应该这样做,首先,去吧,希望你已经说服了自己。如果您仍然非常非常确信需要这样做,那么您经常需要一起提交,为整个功能创建一个大型提交,然后在分支之间创建变更集
  • 有一些