3

我们的项目从svn到git一直是converted。开发人员现在使用git-svn,但希望 继续开发以利用更多的权力。心愿:在发布主线和分期工作之间拥有多个稳定分支的Git工作流程,与svn同步

  • 强大的分支,e.g话题/特性分支
  • 隔离,有时多个并行。
  • 瘦&平均和稳定詹金斯-CI设置 - 最少的维护(VS改变每一个版本后的工作配置)
  • 短迭代,开发团队发布到每2周QA;不一定在外部
  • 多个产品(P1..P3)由相同来源构建,独立发布;随着变化的压力
  • 有更多的休闲,非Git用户在“更大的团队”...他们S&U :) ..但我们必须让他们svn访问至少1分支(干线)。他们的贡献限制了几个目标,所以这里没有太多的风险。

以下策略会起作用吗?

  1. 发展:主线分支那里发展情况,网HRS欧洲混帐流
  2. 稳定的产品分支:产品1 ..产品3。其中一个或多个将在dev发布时从主线合并。似乎在Git流程中类似于'release start 1.4.3' - 但这些将是永久分支。发布会在此标记,然后合并回来开发。这一点它会很稳定,就像git-flow中的主人一样,其中只有几个。
  3. 直接停止使用git-svn - 代之以推/拉镜子。也可以使用功能分支,如果需要
  4. merge svn/trunk - > develop。 Svn会得到偶尔和孤立的检查;所以计划通过Jenkins的工作自动化它,通知人们是否失败,以便可以手动合并
  5. 合并develop-> svn/trunk:定期(例如每天),以批处理模式。这可能是最动人的部分(至少对于新手来说)。规划类似rebase or some reset wizardy
  6. CI设置将会是直接的,如测试和开发建立关主线,产品正式建立了他们自己的产品分支

Git-Flow是诱人的 - 主要是因为它很好地描述和自动化。但它似乎不适合我的情况;主要是由于潜在的并行版本,多个产品线和CI aspects

任何知情意见将不胜感激。

回答

3

那么,一旦你转换为混帐,这将是非常哈克得到一些分支设置为SVN。我认为那些“用户”应该学习或消失。如果你需要git的功能来做更好的分支管理,那么它是正确的解决方案,无论是哪一种,我都会为你提供我为之提供的模型Net-SNMP,工作得很好。我们有很多生产版本分支机构维护了好几年,因此在SVN下跟踪补丁程序总是很痛苦。在我们新的Workflow下,我们更加快乐,并且通常具有足够好的感觉,因为我们没有因为真正的合并而将补丁放到某个分支或另一个分支(与SVN相反,我们必须手动确保每个分支包含每个补丁)。

+0

On svn-> git syncing(point 4),again:听起来很简单:简单的合并。另一种方式(#5)则不那么重要 - 需要将历史记录线性化。它基本上与git-svn(我曾经在其中进行复杂合并)相同,只是在团队级别。关键,恕我直言,是定期和一贯地做到这一点。你会期望什么样的痛苦 - 除了政治? (即使我同意人们应该乐于学习,他们可以争辩说,现在没有时间了,我宁愿逐步推出,也不要混合政治)。 – inger 2012-03-05 22:07:02

+0

感谢您分享您的工作流,级联发布分支和瀑布合并很有趣,即使不适用于我的上下文。在你的情况下,版本分支似乎是为了维护目的,在我的版本中,它们更多的是平行推出/硬化+以提供清晰的,以产品为中心的历史。 – inger 2012-03-05 22:17:16

+0

如果你的分支是真正平行的,那么尽可能考虑使用特征分支,并列出哪些特征需要进入哪些产品分支等。 – 2012-03-05 22:22:31