您使用的修订控制系统(SCM)最烦人的是什么?

时间:2009-04-27 13:39:35

标签: version-control

这个问题询问我应该使用哪种版本控制软件。相反,我想听听你认为你所使用的某些SCM的缺点。

网站和营销材料只突出了这些优势,但我希望听到那些实际使用它们的人的想法。

您是否可以列举一些您在使用或使用的SCM中发现令人讨厌或适得其反的质量或行为?

13 个答案:

答案 0 :(得分:23)

在我最近的两份工作中,我被要求使用IBM's Rational ClearCase并计算这种不足和令人沮丧的方案每天生活的意愿,至少需要一周的时间。我最主要的抱怨是:

  1. 没有工作单元的概念。如果我签入十个已更改的文件来修复错误或添加功能,则无法再将这些更改作为一个组进行查看。即使他们在评论中都有相同的检查。
  2. 动态视图有时会在重新启动时消失。没有详细说明,这意味着其他应用程序可能依赖的文件在重新启动计算机时仍有不到50%的可能性。
  3. 如果我将代码签入我的分支然后合并回main,它将不会使用相同的注释自动将其检入main。这意味着如果我想在主分支上做好评论,我会不断重复自己。
  4. 实际上没有与Visual Studio集成(显然这在7.1中更好,但当然我们还没有升级到那个)
  5. 一个相当快速和松散的UI一致性概念,一些对话框的右侧是按钮,另一些是沿着底部的按钮。另外一些真正需要调整大小的窗口(包含长文件名)不是。
  6. 很少(但通常情况下,这已经发生在我两个公司所说过的每个人身上至少一次).ClearCase将决定在XML文件的中间添加一个随机字符。
  7. IBM为此更改了每个许可证4,600美元的事实,并且人们付钱。
  8. 还有几十个小问题让我的工作效率远离我,因为我必须打击这个工具,而且我很有可能会回来编辑这篇文章,以此来宣传我每天的挫败感。

答案 1 :(得分:8)

塞丽娜的尺寸非常严重。我们过去每天都需要重新启动服务器。否则,它变得非常慢。我不确定这是实施问题还是产品问题。 您还可以参考Eric Sink博客了解有关版本控制的更多详细信息。

答案 2 :(得分:7)

我可以确认关于VSS的大部分内容mentioned here

我被迫使用它。 : - (

答案 3 :(得分:5)

颠覆。它的分支支持非常糟糕 - 这就是为什么我最喜欢Mercurial的原因;我不在飞机上开发东西,但我确实需要分支。

答案 4 :(得分:4)

前段时间我被Serena Version Manager困住了。太可怕了。我们的存储库非常复杂,我们拥有的促销组,我们拥有的分支机构以及我们拥有的标签都是如此失控,除非您确切地知道您需要做什么,祝您好运。比以往任何时候都要复杂得多。

现在我们正在使用TFS(在家里我使用Subversion),我是一个开心的开发者。

答案 5 :(得分:3)

Subversion :服务器非常强大,但没有GUI管理客户端(编辑:确实需要一个支持选项)

我们大约一年前从Source Un safe切换到Seapine SurroundSCM;我们强烈考虑过Subversion,但我们的存储库管理员做得非常好,不是命令行专家,没有GUI管理客户端,我们维护公司源代码管理存储库的方式存在很大漏洞。

FWIW,我认为所有的SCM都有术语问题。当我们公司的许多用户不是具有完美记忆的软件工程师时,这使得切换SCM软件变得更加神奇。 VSS调用目录“项目”。 Seapine SurroundSCM调用目录“存储库”。 (Subversion也有一些讨厌的名字,但我不能想到它们现在是什么)

答案 6 :(得分:3)

Subversion有两个主要缺点。

  • 工作副本是软件实际大小的2倍。使用大型媒体文件和多个分支时,这可能会变得难以处理。
  • 标记和分支只是主干的副本。将存储库目录结构映射到开发人员工作空间时,这会非常烦人。我渴望传统的分支和标记概念。

总而言之,与许多替代方案相比,它是一个非常受人尊敬的VCS。

答案 7 :(得分:2)

尽管SCM可能是您在开发环境中可以使用的最好的东西之一,但它总是困扰我(而且这些可能是挑剔):

  • 当其他人更改我的文件时,在我提交或进行更新之前我不知道。
  • 合并是一种痛苦。
  • 当其他人吮吸它时,它会阻碍它的发展。
  • 管理同一个应用程序的不同分支,标签和中继线太困难了。

这就是我现在所能想到的。 :)

答案 8 :(得分:2)

这是我的个人名单。我没有声称这些要点得到了非常好的研究,但这些是我根据我的使用模式对他们的主要抱怨。

  • 单调:必须指定“。”表示当前工作目录(否则,任何命令都适用于整个工作副本)。
  • CVS:要列出太多。不惜一切代价避免。 (可能是许可处理)。
  • Subversion:未分发。
    • SVK:向subversion添加分配感觉很笨拙。
  • Mercurial:这是一个单调的克隆 - 为什么,亲爱的上帝,为什么?
  • Bazaar:网络真的很奇怪(尽管可能已经过时了)。
  • Git:源代码质量,但这种情况正在发生变化。

答案 9 :(得分:2)

Subversion非常慢,缺乏离线提交等功能,有时提交失败并需要更新,如果你必须使用@符号来查看你的回购,那就太难用了。

Bazaar相当不错,但大部分都不受支持(至少来源于sourceforge)。另外,我更喜欢分支/标记的颠覆模型。

答案 10 :(得分:2)

Subversion(嗯,Tortoise SVN;我认为它更像是一个客户端问题)偶尔会感到困惑,我不得不花一些时间将内容复制到一个临时文件夹,重新添加,清理等等,这样我才能让它做一个干净的更新/提交而不抱怨锁文件。

答案 11 :(得分:2)

我目前是Mercurial用户,我非常喜欢它。但它有一个缺点:如果修订树真的分支,它会变慢。其中很多都归结为一些设计选择,尤其是变更总是根据最后提交的变更(而不是父变更)进行记录。但我仍然会选择其他任何东西。

对我来说,版本控制系统有两个必要条件:(1)变更集的概念,因此原子变化保持原子; (2)简单的分支合并而不会丢失信息。基本上所有的DVCS都有这个;大多数其他VCS没有。 (Perforce接近,但总是让我觉得分支合并不会保留分支的变更集和注释序列。)

但如果我正在接受采访并且潜在的雇主告诉我他们使用CVS,我将走出面试。 (实际上,这是我通常在电话访谈层面提出的一个问题。你可以通过他们使用的版本控制系统来了解一个公司。)

答案 12 :(得分:1)

根据我对Serena Dimensions的体验,每个插件都会中断。甚至Windows资源管理器外壳集成也会降低对网络共享的访问速度以进行爬网。然后它并没有告诉你关于变化的所有信息。更改了目录树底部的文件?更高级别的文件夹叠加层不会告诉您。与Tortoise SVN相比,它是缺乏可用性的一个例子。

但我真正真的不喜欢它的是当我做一个Deliver它检测到文件更改时,然后当我做一个比较来查看差异它告诉我祖先和衍生物是相同的。如果我不相信内置的差异工具,它确定祖先和衍生物在实际上是不同的时候有多少次相同?

当基本版本控制基础不起作用时,任何人都可以构建更改控制工具。哦,如果您尝试与第三方差异工具集成,那么参数传递中的一个错误就会微妙出来。