SVN介绍

问题描述:

我正在与其他使用SVN的开发人员合作。我是SVN的新手,我想更好地了解如何使用SVN。SVN介绍

在目前我们有:

      __ branch developer 1 
Project 1     /___ branch developer 2 
     |     /____ branch developer 3 
     |____ branches---- \____ branch developer 4 
     |     \___ branch developer 5 
     |____ tags   \__ branch developer 6 
     | 
     |____ trunk 

他们问我,开始前下发展,到:

  1. 更新我的分公司
  2. 从其他分支合并我的分支和解决冲突,因此我必须从dev1,dev2,dev3等合并... 提交我的作品

现在,我的问题是...这是正确的接近?每次都需要很多时间来做这么多的合并。或者我们应该只为所有开发人员使用一个分支?我对SVN真的很陌生,我不想做一些错误的事情......所以我会非常感谢你的帮助,让我走上正确的道路。

+0

http://stackoverflow.com/questions/34975/branching-strategies – 2012-07-05 09:20:07

+1

http://www.codinghorror.com/blog/2007/10/software-branching-and-parallel-universes.html – 2012-07-05 09:20:58

+0

谢谢!很有帮助! – Uncoke 2012-07-05 09:55:01

不,这不是使用SVN的正确方法。每个开发者都没有理由拥有自己的分支。

通常,每个人都在干线上工作。如果某些功能需要很长时间才能开发,并且不能在主干上进行以避免干扰其他开发人员,则需要制定特定的功能分支。树干的更改会定期合并到此功能分支,一旦该功能完全在其自己的功能分支中开发完成,该分支将重新集成到主干中,并被删除。

如果每个人都必须不断从其他人的分支中合并,那么与在主干上工作并没有什么不同,除非它更加痛苦。无论如何,它不会扩展到超过2或3个开发人员。

我建议您阅读免费提供的SVN book,其中详细解释了上述所有内容,并与您的同事讨论使其采用传统的最佳做法。

+0

谢谢JB!我对我们的战略非常困惑......并且你在确认我的怀疑:合并很多分支机构就像在单一的后备箱里工作......我同意!谢谢!现在我想问'堆'如何延长一天到48小时:) – Uncoke 2012-07-05 09:59:54

我个人认为目前的实现是疯了。目前有7个分支机构(每个开发者一个),每个分支机构需要进行七次合并才能开始任何工作。

只要有更多的开发人员加入到团队中,合并策略变得非常麻烦并且容易出现更多错误。您可能需要编辑X个分支中的冲突,然后才能开始自己的开发。

我会让每个开发人员在存储库的主干上工作。在处理一个repo目录时,更容易管理冲突解决和合并。

理想情况下,您希望在敏捷的工作流程中工作(小型可管理的工作块),只需几天即可完成。任何比这更长的项目都可能拥有自己的分支文件夹,纯粹是为了将代码和广泛的重构从主干中分离出来,以免中断团队其余部分的工作流程。

一旦完成了大型任务,您只有一个分支文件夹合并回干线(其他开发人员在其工作完成后不断更新)。

应该使用源代码管理系统来使开发工作流程更容易,而不是更复杂。

+0

谢谢,你是在确认我的疑惑。我和你一起。 – Uncoke 2012-07-05 09:56:05

我同意其他人说你的策略目前是疯了! ;)

就我个人而言,我更愿意将trunk作为稳定的'live'版本,并将所有开发保留到一个分支,这样所有开发人员在同一分支上工作,只需要在功能或者项目已准备就绪,并且您知道自从您分支后树干仍未更改。

尽管上述选项可以正常工作,但我担心每次在主干上发生某些变化时都必须更新分支,并且增加了冲突的可能性(如果干线是实时代码,则破坏了网站/产品)。

像其他答案一样告诉你:这种方法简直就是braindead。在你最终完成工作之前,你会浪费你的时间从不同的分支合并。

除此之外:如果你想为每个开发者分配一些东西,为什么不使用像mercurialGit这样的分布式VCS?

如果您必须学习SVN(并且尚未被破坏),您也可以学习mercurialGit。有good reasons切换。

两年前我放弃了Git的SVN,并没有后悔一天。相反,我喜欢便宜的分支,合并工作,在他们进入主人之前重新提交提交等等。

每个人都在本地工作,当谈到将事情合并到master(SVN中的trunk)时,开发人员合并,然后推送到中央回购站。您不必浪费任何关于哪个开发人员应该在哪个分支上工作的想法。

关于分支,有大约一个相当受欢迎的文章一个成功的Git分支模型这里:http://nvie.com/posts/a-successful-git-branching-model/

或许你可以说服你的同事切换将是他们的工作真正受益。即使我们使用Git,我仍然坚持要手动合并。我们每周需要2到3个小时来同步我们的工作。只有两个人的工作。如果你从更多的合并,这将需要很多的时间,可以更好地使用。