我厌倦了手动跟踪我的分支并在我的存储库中合并!这太容易出错了。在一个每个人似乎都想要减少重复和自动化一切的想法的世界里,颠覆分支/合并感觉就像它从80年代遗留下来一样。在没有增加分布式SCM范例的复杂性的情况下,具有出色的分支和合并支持的subversion有什么好的替代方案?理想情况下它是免费的,但如果我不得不支付一些现金,如果它足够好我可能会倾向于。
答案 0 :(得分:25)
您升级到Subversion 1.5吗?它包括自动合并跟踪。这可能会解决您的问题。听起来你已经熟悉了这个工具本身并且它是免费的。因此,如果您将当前的解决方案升级到1.5,您将几乎没有学习曲线和零成本 - 此外,您不必经历将现有代码移植到新的源代码控制系统的痛苦。
答案 1 :(得分:7)
您是否考虑过分布式版本控制,例如Git?每个“结账”本质上都是一个分支......这是一种完全不同的思考源控制的方式。
Git是免费的,由Linus Torvalds创建,用于Linux(当然还有很多其他项目)。
答案 2 :(得分:6)
Perforce是一个很好的工具,但超过2个用户,它会花费你,因为它针对的是专业人士。我们使用它具有相当重的分支方案(在主要开发期间每个特征1个分支)并且它运行良好。有点像微软使用的“蜘蛛网”分支(使用修改过的旧版Perforce),但我现在无法在线找到这个故事。
答案 3 :(得分:5)
我还厌恶旧版Subversion中的这些限制。然而,我公司中没有其他人使用分支和合并。他们每个人在尝试一个新功能时都会得到另一个结账,hack-hack-hack并且如果坏的话就摆脱它 - 在好的时候提交。有时他们会做出不好的事情;)
所以我开始使用git + svn。含义:我有svn checkout,在这个目录中我已经启动了git。现在我有快速合并和分支,我不会打断任何其他。如果我需要尝试新功能X,只需分支/结帐/黑客入侵。如果我现在需要从我们的SVN repo中获取一些关键更新:git stash,git checkout master,svn update,git commit -a,git checkout feature-X,git rebase,git stash apply(所有这些因为git-svn没有在Windows上工作。)
看起来很多操作但速度很快。我的意思是非常快。并给予我所需的灵活性(见my article on git + visual studio)。
我认为Bazaar可以做类似的事情,可能更好一点:它可以轻松支持non-distributed, central-repository based development。
答案 4 :(得分:3)
任何分布式解决方案。 Git,mercurial等。我的偏好是git。
答案 5 :(得分:3)
你应该看看Accurev。它确实指向并点击了新流的创建(如分支,但更好的IMO),并且流经流的代码的整个概念使得合并更少痛苦和频繁的任务。它管理起来非常简单,拥有3个用户的免费许可证,并且内置了很棒的可视化工具。
答案 6 :(得分:3)
我从一家Perforce商店进入Subversion商店,错过了Perforce所拥有的强大分支和合并支持。因此,Perforce将是我的第一个建议,但后来需要花钱:)。
Subversion 1.5看起来很有希望它的合并跟踪支持,但它被标记为基础,并且看起来它不会有我愿意接受的最小合并支持(即类似Perforce)。
所以,我倾向于分布式VCS,特别是Bazaar:
答案 7 :(得分:2)
我爱上了它。
答案 8 :(得分:2)
您有没有问过自己为什么有这么多分支/合并操作?有没有办法简化您的开发过程?
颠覆,恕我直言,是KISS(保持简单,愚蠢)原则的一个很好的应用。翻译:根据我的经验,通过简化开发过程,您将获得更大的生产力提升,而不是获得更复杂的工具。
答案 9 :(得分:1)
我经常使用Clearcase。只要您经常进行合并,它就可以非常轻松,并且还可以在后台运行合并作业。如果发生合并冲突,您需要进行干预。
但是,它很昂贵,很难找到熟练的Clearcase管理员。
答案 10 :(得分:1)
Plastic SCM就是分支和合并......简单易行。检查其GUI并与其他替代方案进行比较。
答案 11 :(得分:1)
Perforce最多可供2位用户免费使用。
我不是100%肯定你期望能够/应该自动化, 但是perforce的质量非常高。您可以轻松创建和维护 分支机构,您可以轻松合并。樱桃挑选很容易 您在一个分支中进行的特定更改,并将它们合并到另一个分支中 具有高度自动化的分支。
答案 12 :(得分:1)
尚未提及的一件事是,在same centralized manner that you're used to with Subversion中使用git是完全可能的。它确实是一款出色的软件。
答案 13 :(得分:0)
分支和合并在Subversion中得到了极大的改善,您所描述的问题早已解决。例如,Subversion支持合并跟踪超过10年。
svn:mergeinfo
进行合并跟踪。您不需要手动跟踪合并。我讨厌手动跟踪分支并合并 我的资料库!太容易出错了。在每个人似乎都存在的世界 为了减少重复和自动化一切, subversion分支/合并感觉就像是80年代遗留下来的。
这些问题已在2008年6月19日发布的Subversion 1.5.0中得到解决。,当前版本为1.13.x。
答案 14 :(得分:0)
只需添加到DarenW - 对于Windows,有一个非常好的Subversion服务器产品是免费的,让生活成为梦想 - VisualSVN Server。这将最新的Subversion构建打包到单个MSI安装程序中,并添加了一个非常有用的管理控制台。
答案 15 :(得分:0)
答案 16 :(得分:0)
虽然颠覆的替代方案可能不错,但使用口红的颠覆可能会很好。以下是在Mac上运行的颠覆前端的评论:http://www.geocities.com/~karlvonl/blog/2006/03/daddy-needs-new-subversion-gui.html
答案 17 :(得分:0)
这是以CVS的替代方式而不是SVN为框架的,但无论如何 - 它列出了几种替代方案,包括其他非分布式方案。 http://better-scm.berlios.de/alternatives/
答案 18 :(得分:0)
我可能会因此而受到抨击,但如果您不想参加免费产品,那么MS Team Foundation Server值得一看。与其他无名的MS产品不同,源代码控制功能强大且功能齐全。将它与IDE集成,自动构建/测试引擎和工作管理功能相结合,非常棒。当然,它针对的是公司,价格合适。
注意:如果您不主要在Visual Studio中开发,我不会为此烦恼。
答案 19 :(得分:0)
Git,Mercurial,Bazaar,Darcs
答案 20 :(得分:0)
git - http://git.or.cz/(我非常喜欢git,非常棒的@分支和分布式开发) - http://github.com/是一个很好的工作示例。
答案 21 :(得分:-1)
您认为像GIT这样的DVCS有什么复杂之处?它在某些方面更简单:没有客户端/服务器,在一个地方没有repo在另一个地方有工作目录,用户管理不是内置的(如果你需要,请使用ssh)。正如Jim Puls所说,如果你愿意,可以使用非分布式DVCS。我将GIT用于单人项目,即使是仅持续几周的项目。没有什么比Tortoise更完美,但是gitk,qgit和git-gui对于那些比我在SVN看到的功能更好。我曾经更喜欢guis,但现在我非常喜欢git命令行 - 但是请查看easygit以获得一些改进。