我认为当我们使用像GIT上的SVN这样的断开连接的版本控制时,这个问题很普遍。我来自Clearcase背景,那里有一个活动服务器,文件只是我们系统中的虚拟副本。
如果我以明确的角度讲话,如果有多个人正在为特定功能工作,那么这将分开分支并由开发人员分支在特定分支中进行检查。完成整个功能后,它将合并回主分支。基本上我们不会通过半熟的功能搞砸主分支。因为其他人可能会受到日常生活的伤害。
上面的方法很好,因为我在clearcase服务器中有一个分支。使用像SVN和GIT这样的分离版本控件,如何解决这个问题?是否需要设置一个单独的服务器并与开发人员共享才能完成此任务?
答案 0 :(得分:0)
对于Git,您不必设置单独的功能 您可以根据需要创建任意数量的功能分支,并以非快进方式合并它们,以实现相同的目标。
有关详情,请参阅“Why does git use fast-forward merging by default?”。
SVN可以提供相同类型的工作流,除了合并回主分支可能需要“merge --reintegrate
”与经典合并略有不同(以及一些与SVN有待处理的错误like this one 1.7)。
两者之间的区别在于分支机构的发布:
有关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 up
是任何代码更改之前必须的,以便将其他人提交的新更改转换为本地工作副本(如果没有更改则不能提交到存储库,更新+合并在自己的更改之上可能会破坏代码)在两个工作流程中,分支都放在一个中央存储库中,Subversion存储库之间的双向数据交换是SVN管理员的头痛问题