TL; DR - 如何为动态创建的分支实现Pull请求?
我们在TFS git中使用了一个经过修改的gitflow工作流程,其中包含用于构建和测试的新TFS 2015 Build系统,以及用于部署的Octopus。
我们有以下设置:
没有开发分支。我们从我们推送发布/ v *时创建的标签中分支hotfix / v *分支,以便修复实时环境。这一切都非常顺利......直到我们在“master”上实现安全性,并对除feature / *分支之外的所有分支强制执行Pull请求。
我被要求在推送时启用PR来掌握,释放/ *和hotfix / *分支。师父没问题 - 可能是因为它是一个持久的分支;一旦完成工作,所有其他三种分支类型都会合并为主,并且PR对此非常有效。我已经使用TFS REST API在新创建的版本/ *和hotfix / *分支上启用动态分支策略。
但是,当我们尝试对发布/ *和hotfix / *分支所做的更改强制执行PR时,我们正面临工作流问题。这些分支是由开发人员在需要时动态创建的 - 创建者的第一次推送可以包括任何更改,然后将这些更改部署到Octopus。对于发布分支,这通常是正常的,因为我们所做的只是增加文件中的版本号,并推送更改。对发布/ *分支的任何进一步更改都要求开发人员在发布/ *分支(比如releasefix / v1.1.2)之外创建另一个分支,以便他们在发布分支中创建PR。这有点尴尬(有点危险),但对我们来说是一种可接受的方法。
当我们想要PR修补程序/ *分支时出现问题。目前的工作流程如下:
在TFS构建的标准“推送触发器”设置之上,TFS还有一个代码策略,允许我们在创建PR时运行构建 - 但之后 PR被批准(除了公关正在合并的分支机构)。 release / *和hotfix / *分支通常合并为master,但我们需要在PR批准后在这两个分支上运行发布版本,而不是之前!
有没有人有任何建议?我唯一的想法是完全废弃修补程序分支,并维护最新的实时发布/ *分支,并将修补程序合并到其中。我们遇到的问题是我们需要针对修补程序在章鱼(PREPROD - > LIVE)中定位不同的生命周期,因为QA和UAT可能正被另一个版本分支使用。
作为旁注,我们必须使用release / *分支,因为我们可以在任何时候进行多个版本。这允许我们为不同的环境维护单独的错误修复 - 进入gitflow的开发/主设置对我们不起作用,感觉就像向后一步。