使用SVN定义基于功能的开发的工作流程

时间:2012-02-01 13:45:35

标签: git svn version-control versioning clearcase

我认为当我们使用像GIT上的SVN这样的断开连接的版本控制时,这个问题很普遍。我来自Clearcase背景,那里有一个活动服务器,文件只是我们系统中的虚拟副本。

如果我以明确的角度讲话,如果有多个人正在为特定功能工作,那么这将分开分支并由开发人员分支在特定分支中进行检查。完成整个功能后,它将合并回主分支。基本上我们不会通过半熟的功能搞砸主分支。因为其他人可能会受到日常生活的伤害。

上面的方法很好,因为我在clearcase服务器中有一个分支。使用像SVN和GIT这样的分离版本控件,如何解决这个问题?是否需要设置一个单独的服务器并与开发人员共享才能完成此任务?

enter image description here

3 个答案:

答案 0 :(得分:0)

对于Git,您不必设置单独的功能 您可以根据需要创建任意数量的功能分支,并以非快进方式合并它们,以实现相同的目标。

有关详情,请参阅“Why does git use fast-forward merging by default?”。

SVN可以提供相同类型的工作流,除了合并回主分支可能需要“merge --reintegrate”与经典合并略有不同(以及一些与SVN有待处理的错误like this one 1.7)。

两者之间的区别在于分支机构的发布

  • SVN将在其中央仓库中声明分支,对所有
  • 可见
  • Git用户在他们的本地仓库中声明他们的分支,可以在主公共分支上合并,但选择他们推回到中央仓库的内容:只有更新公共分支和新提交,和/或也< / em>他们的特色分支。

有关DVCS(如Git)引入的正交方面与SVN等集中式VCS相比的更多信息,请参阅“this question”。

答案 1 :(得分:0)

你想在Subversion或Git中使用分支概念 - 不需要任何单独的服务器。这两个系统完全不同:

  • Subversion:,您通过从foo复制到/trunk来制作/branches/foo分支。 Subversion实际上并没有“分支”的概念,但由于您可以在文件夹之间进行合并,因此您可以通过这种方式模拟分支。这包含在SVN book

  • Git:您使用git branch foo创建了一个真正的分支。分支机构是Git中的一等公民,也是您使用该系统的不可或缺的一部分。任何好的Git教程都会涵盖分支机构,请参阅我的link到Git的书。

答案 2 :(得分:0)

跟随冯和马丁

  • SVN并未真正完全断开&#34; VCS(作为Git或任何其他DVCS ),因为在提交更新阶段开发人员的工作副本(某些时刻来自中央存储库的某些树的快照)与中央服务器和本地服务器进行通信在进行合并之前,不能将更改存储在gepo中;其他更改&#34; (如果它们在提交尝试之前出现)
  • &#34;每个功能分支&#34;每个分支的开发人员不止一个(在SVN世界中),即使是两种略有不同的形式:
    1. 与CC直接类比(以及糟糕的工作流程) - 每个开发人员都可以拥有自己的个人分支,但在开发过程中,他们会定期将其他分支合并到自己(和主干到分支),所有已完成分支机构合并到主干
    2. 任何数量的开发人员的单一分支(常用的方式),svn up是任何代码更改之前必须的,以便将其他人提交的新更改转换为本地工作副本(如果没有更改则不能提交到存储库,更新+合并在自己的更改之上可能会破坏代码)

在两个工作流程中,分支都放在一个中央存储库中,Subversion存储库之间的双向数据交换是SVN管理员的头痛问题