标签: branching-strategy

分支策略

我工作的公司开始遇到他们目前的分支模型的问题,我想知道社区有哪些不同的分支策略?

对于不同情况,有什么好的吗?贵公司使用什么?它们的优点和缺点是什么?

version-control branch branching-strategy

73
推荐指数
7
解决办法
4万
查看次数

使用git-flow的多个开发分支

我目前正在寻找git-flow,并试图弄清楚如何将它用于我参与的项目.

我查看了各种git-flow教程,我对git非常熟悉.因此,我不需要任何关于git的技巧,而是直接使用git-flow的工作流程.

情况如下:

当我重新定义一个版本(让我们称之为1.0)时,这就得到了开发的分支,这很好.现在让我说我开始研究2.0,添加新功能.当然,一旦完成,我想将它们合并到开发中.现在1.0上的修复很好,所以我们也说我生成了几个版本1.0.1,1.0.2等.所有这些也将更新开发分支,这也很好.到目前为止,麻烦,我可以独立开发2.0和1.0.x的修补程序的功能.

但是,假设某人要求1.1版本的新功能.现在我有一个问题.如果我创建一个功能分支,这将基于开发分支,它可能已经包含2.0内容,我可能不希望在1.1版本中.

有一种简单的方法,可以独立处理这些2.0和1.1的变化吗?

我已经看到了几种可能性:

  • 在开发的最后发布位置创建一个新分支.将开发重新定位到此位置并重命名另一个开发分支.但是,此分支不包含1.0.1等的任何修补程序.

  • 在2.0完成之前,不要合并2.0的功能.然而,在最后一刻,我将不得不将大量未合并的更改保持打开状态.如果2.0发布并且之后要求更改为1.0.x,这也无济于事.

这对git flow来说有可能吗?即,一旦新版本的工作开始甚至完成,早期版本的版本是基于什么?

git version-control git-flow branching-strategy

21
推荐指数
2
解决办法
9596
查看次数

封闭分支如何影响Mercurial的表现?

我注意到有关分支名称的问题的一些 答案引用Mercurial wiki来指示每个功能的分支或每个bug的分支命名约定可能会导致性能问题.将分支标记为--close-branch在提交时标记为关闭的能力是否会对此性能声明产生任何影响?

mercurial branch dvcs branching-strategy

19
推荐指数
2
解决办法
2578
查看次数

在开发/维护Web应用程序时,我应该使用哪种分支策略?

我正在尝试为Web应用程序项目确定最佳分支策略.以下是我到目前为止所提出的建议,我将非常感谢任何评论和经验.

我看到它的方式有两个主要的分支策略:"按版本分支"和"按功能分支".

"按发布分支":开发发生在主干上.当发布时间临近时,将为该发行版创建一个分支.然后稳定/测试该分支,最后进行释放.在发布之后,分支被合并回主干,同时保持发布分支活动以进行错误修复.是否应用了错误修复,然后将其合并到主干中(如果主干上的开发没有以其他方式使错误重叠).新功能将添加到主干中,不会影响发布分支.当新的发布时间临近时,将创建一个新的发布分支aso

"按功能分支":主干始终是"生产"主干(现场代码).错误修正直接提交到主干.下一版本的功能是在功能分支中开发的.Bugfixes会不时合并到功能分支中.当发布时间到来时,功能分支将合并到主干中,并且生命周期将继续.

现在,我认为这两种策略之间的实际区别在于,"发布"允许您维护软件的不同生产版本(当客户A具有版本1和客户B版本1.5时,客户端是此处的付费客户案件).相比之下,使用"按功能"策略,您只能支持当前的生产版本(所有客户端都使用最新版本).

由于在典型的Web应用程序中,所有客户端都使用相同的"最新"版本(因为它们都访问相同的服务器),我认为"按功能"方法是最常用的.它消除了合并"跨层次结构"的需要,比如说必须将bug修复应用于所有3个版本.

所以我目前的状态是我应该选择"逐个分支".如果重要,我的团队不是很熟练.

svn version-control branch web-applications branching-strategy

11
推荐指数
2
解决办法
2834
查看次数

git-flow:制作"发布候选人"/ QA网络工件的工作流程

我们正在使用git-flow分支模型开发包含Web工件的多个项目.

参考:Vincent Driessen的git flow分支模型

我们正在使用develop分支并jenkins自动构建和部署SNAPSHOTWeb工件以测试环境.

我们手动运行git flow release startgit flow release finish构建非快照工件,这些工件部署到我们的工件并最终部署在prod中.

(如何运行git flow xxx命令?这是一个备忘单)

我的问题:QA的工作流程应该如何运作?

鉴于:

  1. 我们不希望将快照部署到QA
  2. 如果我们在QA中测试的相同工件部署在PROD中,那就太好了
  3. 我们可以git flow尽可能地使用脚本和分支模型

看看分支模型,我自己最好的理解是:

  1. 制作发布分支(例如release/1.1).
  2. 从发布分支构建工件并测试QA.
  3. release/1.1分支中进行更改并根据需要返回到步骤2
  4. 测试完成后,finish发布(合并为主)
  5. 在prod中部署工件.

有没有人有这方面的经验,特别是一步2?如何唯一地标识发布分支中的工件?

我们正在考虑使用版本候选版本,其中maven版本1.1.RC1指示release-candidate1,跟随1.1.RC2,最后1.1(最终版本).

git branch maven git-flow branching-strategy

9
推荐指数
1
解决办法
4301
查看次数

Git:测试两个功能分支的组合

我为每个功能都有一个Git分支.但是,有时候,当A我在分支机构中进行开发时,我想测试一下A如果B应用的话也会如何表现.

目前,我用这个:

git checkout A
git branch base
git merge B
git reset --mixed base
git branch -D base
Run Code Online (Sandbox Code Playgroud)

有没有更短的方法来做到这一点?

另外:如果AB不共享同一个祖先怎么办?

o -- o -- o [A]
 \-- x -- o [v1_0]
           \ -- b1 -- b2 -- o [B]
Run Code Online (Sandbox Code Playgroud)

我怎么能更轻松地做这样的事情?

git checkout A
git branch ABase
git cherry-pick v1_0..B   // only applying b1,b2 not x
git reset --mixed ABase
git branch -D ABase
Run Code Online (Sandbox Code Playgroud)

git branching-strategy

8
推荐指数
1
解决办法
164
查看次数

如何在 Azure DevOps 中设置分支名称的默认模板

在 Azure DevOps 板上的任务中,我可以单击“创建新分支”,如下所示。

\n\n

创建新的分支链接

\n\n

这将打开一个对话框,在其中指定新分支的名称和基础。为了节省时间 \xe2\x80\x94 并鼓励我的团队 \xe2\x80\x94 中一致、有意义的分支命名 \xe2\x80\x94 我希望名称字段具有基于任务标题的默认值。

\n\n

是否有这样的设置或其他方法来完成相同的任务?

\n\n

我见过这个类似的问题,但在发布时仍未得到答复。另外,如果可能的话,我希望在 AzureDevops 在线 UI 中实现这一点,因为这就是我们目前跟踪工作的方式。

\n\n

还有:在 Azure DevOps Git 中强制执行分支命名约定。但我不想强制执行该约定,而是想通过使用我们已经一贯遵循的约定来节省时间。

\n\n

创建一个新的分支对话框

\n

git azure branching-and-merging branching-strategy azure-devops

7
推荐指数
1
解决办法
2215
查看次数

如何在master上进行错误修正并将其集成到不太稳定的分支中?

我现在正在为我的一个项目使用Git,我喜欢它.

但是,因为我是唯一一个在我的项目上工作的人,所以我用过的唯一命令就是

git status
git add .
git commit -m 'message here'
git push origin master
Run Code Online (Sandbox Code Playgroud)

我很久以前就已将项目推向远程(我使用Capistrano进行部署),一切都很顺利.

现在我想改变网站的设计,但保持逻辑不变.我猜我需要创建一个新分支(让我们称之为newdesign).

我想知道的是:如果我正在newdesign分支机构工作,并且我在分支中看到了一个错误,master我怎么能修复bug master然后将该bugfix集成到newdesign分支中,以便后者成为与实际逻辑保持同步?

git branching-strategy

6
推荐指数
1
解决办法
1868
查看次数

基于主干的开发版本和修补程序问题

我无法理解如何处理以下情况:

  1. 功能A被提交master为commit A
  2. 我们准备好发布了,v1.0.0因此我们将commit标记A为,v1.0.0然后rel-1.0.x从中创建一个发布分支以进行质量检查。
  3. 功能B被提交master为commit B
  4. 质量检查批准v1.0.0,我们部署并删除rel-1.0.x分支。
  5. 我们已经准备好发布,v2.0.0因此我们将commit标记B为,v2.0.0rel-2.0.x从中创建一个分支以进行质量检查。
  6. 在生产(v1.0.0)中发现了一个错误,必须立即进行修复和部署。

在这一点上,我不确定我们应该如何处理。如果该错误位于主干中,则可以从该主干创建一个修补程序分支,修复该错误并合并到主干中。然后,rel-1.0.1从创建分支v1.0.0,从主干中挑选修复程序,将其标记为v1.0.1并部署。

现在,我感到奇怪的是,鉴于v1.0.1提交是master从分支中精心挑选master并标记的,因此提交不是按原样进行的rel-1.0.1。此外,如果还需要修复,rel-2.0.x那么我们应该如何处理呢?我们是否应该再次从主干中挑选错误修复,并将其标记为其他版本,例如v2.0.1

这是我上面要做的图(请注意,v1.1代表上述文本的2.0版,并且是Second feature A fix在准备v1.1发行版时发生的)。

在此处输入图片说明

git version-control branching-strategy

6
推荐指数
1
解决办法
1117
查看次数

在 Github 中启用组织级别的分支保护规则

是否可以在 Github 中的组织级别启用分支保护规则,以便该组织的所有存储库部分为应用的分支继承这些规则。现在,在每个 repo 的基础上为同一组分支启用这些相同的规则集真的很麻烦。

github github-api branching-strategy

6
推荐指数
1
解决办法
3271
查看次数