我和我的团队目前使用Perforce进行版本控制。我们曾经把所有东西都提交到trunk,直到有一天我们需要在程序中添加几个项目,所以我们为我的老板创建了一个分支,为我创建了一个分支,另一个分支进行了测试。一切顺利,直到我们尝试将分支合并回主干。我们Visual Studio(VS)和它生成的解决方案文件由于某种原因,它不适用于Perforce。经过很多努力,我们将分支部分合并到主干中。我正在考虑转向颠覆。我在我的本地电脑上有Subversion,我对Visual Studio分支和维护没有任何问题。 我建议老板搬到SVN。虽然我的老板对于移动50万行代码的想法持开放态度,但我需要建立一个强有力的案例。我是最年轻的毕业生程序员,所以说我的想法需要比其他人更多的牛肉=)
我决定在我们的一台服务器上安装SVN并将代码传递给它。我们不会很快摆脱Perforce,但我的目标是以非常缓慢的方式杀死它并且让我的队友变态SVN使用起来有多容易,而且我的船上已经有一个人。
由于我可以从头开始配置SVN,我想应用SVN的最佳实践。我读了红豆书,我打算按照他们的回购布局和备份提示,但我有更多与社交和分支问题有关的问题。 以下是我对社会问题的提问,
有没有办法以社交方式防止源冲突?如果是这样,沟通冲突变化的最佳方式是什么?
我也计划在该服务器上安装CMS。所以我的队友可以写作或传达他们有分支机构之类的东西,但我不知道是否还有其他工具来跟踪我们项目的历史性健康和缺陷。
即使我的公司采用扁平化管理方法,像我这样的新秀如何能够在不打破无形的“高级”等级的情况下说服或强制与高级程序员进行社交沟通?
对于分支和标记,
我不希望其他团队分支在程序中添加“Hello,World!”代码。我想把分支视为一种与众不同的东西。任何人都可以给我一个关于何时添加创建分支的经验法则?什么时候合并?
在什么情况下分支分支是一个好主意?
对于标记,我的理解是标记符号表示程序的静态点(即:v1.0,v2.5)是正确的吗?
如果我创建了一个分支并开始编写我的更改,我的队友应该从我的分支开始同步吗?还是他们还应该在后备箱里发展?或者他们应该为自己创建另一个分支?
我为我的所有问题道歉,但在修订控制方面,我觉得我在BP清理过程中游到了墨西哥湾。
答案 0 :(得分:12)
没有特别的顺序:
答案 1 :(得分:5)
答案 2 :(得分:5)
答案 3 :(得分:1)
虽然Subversion在它的功能上是一个很好的工具,但它的优点当然不是合并。这主要是因为subversion没有跟踪合并的机制 - 你无法在历史中看到合并的东西。
所以我的建议是使用适当支持合并的版本控制系统,或者不使用它。你会为自己省下很多痛苦。 Git目前似乎最受欢迎(似乎有Visual Studio integration和Windows port of tortoise svn。但是,Mercurial,Bazaar等也是可行的选择。
这些工具最初可能比svn稍微复杂一些,但如果你想定期进行分支和合并,那将是值得的。
但即使使用这些工具,如果分支的寿命足够长,合并也会变得困难。世界上没有任何工具可以帮助你。
因此,如果你真的需要分支,或者如果你只是与SVN(或perforce)一起生活,那就要认真思考。
不分支和合并可能比听起来更容易。你应该做的是建立持续集成(有人已经提到Hudson) - 这会让每个人都知道什么时候会破坏测试。如果你有这样的话,团队的不同成员可以很好地处理不同的功能,即使在同一个分支上也是如此。
持续集成将比使用分支和合并工具更加顺畅地工作;虽然你应该有一个不错的测试套件。
如果你考虑分支“大变革”,不要。而是在后备箱上逐渐发展大变化。这比几周后尝试集成一堆更改要容易得多。
最后,如果您想进行实验,只需分开,无论使用什么工具。无论如何,实验分支几乎永远不会被合并回主要开发;-)(是的,我从经验中说话)
您真正需要高级分支机构的唯一方案是,如果您必须同时开发和跟踪产品的多个版本/配置。在这种情况下,明确应该使用高级版本控制工具。
答案 4 :(得分:0)
我从来没有使用过perforce,所以我无法评论差异(更好或更差)。
但是,如果您是Visual Studio用户,则对svn-integration有很多支持(查看ANKHsvn(甚至适用于最新的vs2010)和TortoiseSVN Windows客户端和shell扩展
这里已经提出了许多重点,但我不能强调Constant Integration服务器的价值,这很容易使用类似CruiseControl.Net的东西进行设置,其中包含CCTray等工具......
无论如何,我分歧,虽然这不是一个完美的答案,但它应该提供一些思考的食物。
答案 5 :(得分:-1)
我理解尝试修改版本控制可能是什么样的 - 我喜欢这个比喻,我有时也会这样。
这些家伙已经有了一些非常好的建议,但是如果你想要更实用的东西 - 也许还有演示 - 我建议你查看我们的Subversion网络研讨会。我们将在1月下旬介绍分支和合并,然后是入门课程,然后是更高级的课程。如果你仍然觉得有点混乱,这可能是一个非常有用的工具,因为会有一个实际的演示。
如果这听起来像是您或您的团队中的某个人想要参与的话,那么我们也会进行“Subversion管理最佳实践”课程。
以下链接:http://www.wandisco.com/webinar/subversion/training供您查看,如果有任何需要您注册的内容 - 它完全免费,我们已尝试针对开发人员要求的主题开设课程。希望这有帮助!
莱斯莉