Accurev SCM

30
有人使用Accurev进行源代码管理吗?我们最终会从StarTeam转换到Accurev。
我的初始印象是GUI工具严重缺失,然而底层引擎和分支流概念令人难以置信。
我们面临的最大困难是评估与Starteam交互的自制工具,并用新的DIY工具替换它们,或者找到并购买适当的替代品。
此外,有人使用AccuWork组件进行问题管理吗? Starteam拥有非常好的更改请求系统,而AccuWork远远无法匹配。 我们正在评估使用Accuwork还是购买第三方软件包,例如JIRA。
意见?

http://businesssavvysoftware.com/2010/11/03/scm-with-accurev/ - user558526
2
我从未在一个问题上投过这么多赞!可怜的Accurev受害者应该得到正义! - wavicle
避免像瘟疫一样。宁愿选择死亡,也不要使用Accurev。 - n4rzul
26个回答

62

天啊,Accurev真是太可怕了。代码量达到300k行?试着在数百位开发人员同时为许多项目工作时使用它吧。

持续集成?当然,开发人员可以通过定期合并代码文件(例如在Perforce、Git、Mercurial或其他许多实际起到作用的工具中)来近似实现,但对于架构师、技术领导、构建工程师或任何实际使用源代码控制工具来分析的人来说,Accurev简直太可怕了。

我参加过一次“高级Accurev主题”讲座,其中第一个提示就是一个大型shell命令,用于清除Accurev客户端缓存/同步机制,以纠正Accurev更新未能成功下载应该更新的文件的情况。

时间戳优化复选框?深度重叠?只有一个后台进程的模式对话框?(如果这些进程不是异常缓慢的话,那还好。)为了能够提取组件和交叉合并而放置的层叠图形配置流?更新没有实际上实现原子性,除非进行时间锁定? (诚实的回答:再次更新)

每次我试图在Accurev中进行任何严肃的工作时,我都感觉自己正在与HAL9000、Skynet和Speak & Spell一起玩俄罗斯轮盘。代价?再多花费四个小时的时间。

我为什么要在这里抱怨Accurev呢?因为我的另一台计算机花了整整四个小时才尝试通过VPN更新10MB的文件。原因是什么?因为出现了一些其他的变更导致需要进行某种灾难性的重新同步扫描元素。最糟糕的部分是,所有这些文件都在同一台计算机上的一个工作区中。我们谈论的是几个小时的时间才能使最近更新的工作区达到我可以将正确的刻度放入流历史记录的程度。

一个词的Accurev评论:避免使用


4
@Martin,这个话题的问题是关于Accurev,而不是“变得有建设性”。这个回答包含基于实际经验的有价值的信息,你最好没有将其投票下降。 - Justicle
2
@Justicle:我看到了最后一行。 :-) 我认为“一个词”的回答不太有用。我们可以为此开设一个投票网站。哦,你可以把我列为AccuRev的“粉丝”。我非常喜欢在我的日常工作中使用它。我也可以写一篇关于它的抱怨文章,但那只是因为我每天都要使用它,而我基本上可以写一篇关于几乎每个我每天必须忍受的产品的抱怨文章 :-D。我选择不这样做,因为我认为AccuRev在我们公司提供了极好的价值 - Martin Ba
3
@Martin - 所以您应该添加一个回答,介绍您的经验并解释为什么您更喜欢它而不是其他工具。即使我无法忍受Accurev,我也会投票支持它。请注意,似乎您现有的回答只引用了第三方评论,我认为这比此回答不太有用。 - Justicle
5
经历过静默更新失败这一列车失事,我完全同意这个评估。如果你有雇用多个 Accurev 管理员的奢侈条件,希望你的开发人员在学习该产品的复杂性方面花费不合理的努力,但仍然感到困惑,并且让你的开发人员因挫败而抓狂,那么 Accurev 就适合你。否则,你可以使用任何流行的免费产品,如 Mercurial、Git 等。SCM 不需要像 Accurev 使它那样困难。 - Tim
2
@Tim - 确实如此。如果你要支付那种金额(即金钱),就选择Perforce。否则,看看Mercurial、Git或其他任何东西。我们使用Accurev,而我们以前使用的是ClearCase,它非常糟糕。不知何故,经过一年多的适应,大部分团队都渴望回到过去的好日子。我会亲自打击任何试图强加Accurev给我工作团队的人。唯一喜欢它的人似乎是Accurev的员工、开发者支持(工作保障?)和终极无能者。 - chaboud
显示剩余5条评论

57
说实话,我感觉需要仔细检查一下,看看我是否使用的是那些似乎喜欢Accurev的人所使用的相同工具。我在以前的工作中使用Subversion,并且非常喜欢它。我们从未遇到过任何问题,当然价格也很合适。我对Accurev最大的问题是,他们似乎觉得有必要为了不同而不同。它使用完全不同的词汇来表达版本控制概念,即使使用了将近6个月,对我来说仍然感觉非常陌生。它有不少于8或9种状态的文件可以处于任何给定状态,而Subversion只有大约1/2左右。GUI界面很差,速度很慢,IDE集成插件也不够好。我曾经认为,总有一天我会“理解”Accurev并看到它为什么更好,但这还没有发生。我的建议是远离它。

6
为什么不尝试使用Git呢?我相信你会喜欢它的 ;) - Benjol
1
-1:考虑到预算,我会选择AccuRev而不是其他任何我试过的SCM工具。 - Martin Ba
13
GUI 的界面糟糕且响应速度慢,给它加个赞。 - Diederik
7
用户体验很糟糕。这些人不知道如何制作良好的用户界面。 - grigy
1
是的,我用了8个月,从来没有得到过它,现在使用HG,很开心。 - Tim Ring

30

我已经使用AccuRev九个月了,期待着有一天不再使用它。我的评价是:

这就像是由只是在书上读过源代码控制的开发人员编写的,但实际上从未使用过。

  1. 基本概念缺失或非常复杂。例如,如果已经提交到流中的更改没有很好的“还原”方式,在这种情况下我的工作会丢失8个小时。您可以"清除"该事务 - 但那就是它消失了,您无法挑选您真正想要的更改。

  2. GUI 缓慢、臃肿和不一致。警告信息难以理解,例如 "合并元素 ID 1234556 的错误"。每个对话框都是模态的。正如一个用户所说的那样,文件可以处于9种状态之一,但更重要的是,您必须手动单击9个选项列表,以查看每个文件的设置。

  3. 流模型听起来像是个好主意,但实际上从父流"继承"更改的默认行为在实践中非常糟糕。只需对任何真正使用过AccuRev的人说"深度重叠",看看他们是否发抖,脸色发白或晕倒。创建流非常容易,但实际上将它们与任何有意义的差异合并起来是深奥的和不确定的。

  4. 没有人提到这一点,但整个"包括/排除"规则管理文件和目录过滤器的系统完全失效了。此系统在事务系统之外,因此无法还原、跟踪历史记录或重现对实时源流的更改 - 例如,当Johnny Intern决定"核心"库对整个开发团队没有用处时。

我认为 Accurev 受欢迎的唯一原因是它针对“演示给管理层”的情况进行了优化。我们正在使用 AccuRev 进行严肃的软件开发 - 多个项目和更多的开发人员。流和 GUI 看起来很不错,但几周后会发现其机械、过时,就像一个老旧、破烂的系统。

如果你想要现代和免费的系统,请远离 Accurev,使用 Git 或 Mercurial。如果你需要可靠而昂贵的系统,请选择 Perforce。

编辑: 这里有一个缺乏关注和一般粗制滥造界面的许多例子之一:

默认的差异查看器编号存在“偏移一”的问题 - 例如,如果文件中有2个差异,则查看器显示差异“0 of 1”和差异“1 of 1”。我的意思是,真的相信一个展现如此愚蠢且易于修复 bug 的系统来处理你的代码吗?


嗨,关于第一点,在https://dev59.com/mnE95IYBdhLWcg3wN7Ov上有一个很好的解决方案。获取您原始更改的诀窍是将您的“还原”恢复到您的工作区,然后您应该能够进行所需的挑选操作。 - dominic
1
如果你有选择的话,你会使用哪个系统?(你知道,一个可以可靠地防止实习生Johnny在给他写入权限后搞砸事情的系统。) - Martin Ba
2
@Martin 没有任何系统可以完全防止混乱,但是其他所有的软件配置管理(SCM)都会将Johnny所做的更改记录下来作为一个事务,并且因此可以进行撤销。但是Accurev不会,这个问题已经影响到我们好几次了。再次强调,如果你非常喜欢Accurev,请添加一条回答,而不要在你不同意的评论中发表愚蠢的评论。 - Justicle
关于普通推广或包含/排除,没有什么是你无法撤销/修复的。(该死的,我们甚至没有正常使用包含/排除。)如果你已经被这个问题困扰了几次,那么你可能已经更改了权限设置或添加了一些触发器验证来防止它。如果你没有这样做,那么不要责怪工具。 - Martin Ba
2
老天爷啊,@Justicle,你用的是哪个版本的AccuRev?incl/excl是完全事务性和时间安全的,它们不会存在于事务系统之外!我一直在使用它们。 - vladr
显示剩余2条评论

16

我的目前的客户使用Accurev进行软件配置管理,经过几个使用类似Git或Mercurial的分布式版本控制系统(DVCS)的项目之后,我可以诚实地说,使用Accurev就像把自己的脸挤进了车门一样难以忍受。

在Mac和Linux上使用的GUI非常慢。如果你使用Accurev,就别指望在IntelliJ或NetBeans IDE中使用重构支持...除非你打算自己编写插件。

哦,对了......还有这个小毒瘤==>邪恶的孪生。

但是好在,情况可能会更糟糕......例如Clearcase。


2
+1 给邪恶的双胞胎:等到有人创建一个名为“foo”的目录,而另一个人创建了一个名为“FOO”的目录,并且 Accurev 在允许这种情况发生之后抱怨,并随后允许文件在两个目录下被检入,这时就会出现问题。现在试着解决这个混乱局面吧。 - Tim

16

最近我在使用和管理AccuRev超过一年,我的印象大多数都非常好。

我们在评估了“Plastic SCM”、“SVN”和我们已经拥有并使用的“ClearCase-UCM”之后,决定放弃ClearCase和SVN(两者分别在不同的组中使用),购买AccuRev。

  1. 首先,流式结构比其他所有工具都绑定的旧分支结构更为可靠、简单和安全。他们的网站上有很多关于差异的文章,您可以搜索并阅读以使其易于理解。(尝试这个链接这个链接

  2. 时光安全体系结构:您无法从存储库数据库中删除任何东西。我见过一些工具可以通过适当的管理员权限执行此操作。在AccuRev中,您将使用内部命令来更改或修复错误,并将记录为新的事务,非常聪明,非常安全。

  3. 集成!AccuRev与许多工具(为您提供ALM包)集成-缺陷跟踪工具(如JIRA,ClearQuest),IDE,测试工具(质量中心),如果找不到一个,您可以编写自己的(他们提供Java / Perl / XML / CLI SDK)。

  • 更改软件包,我不知道您是否也是无法忍受那些没有提供变更管理(有人说SVN吗?)的SCM工具,例如ClearCase“活动”和AccuRev的“问题”。在我看来,这是必须的,并且是我的配置管理“最佳实践”之一。它们还可以与错误跟踪工具集成,因此您的用户可以处理真正的任务,如特性和缺陷。

  • 支持非常出色。作为IBM的前客户(因为Rational ClearCase现在是IBM的一部分),转向AccuRev真是太棒了。在评估期间,他们提供了许多在线支持,以了解我们想要工具为我们提供的功能,因此我们甚至在支付一分钱之前就已经共同完善了它。在评估期过后,他们仍然保持了这种响应度;我们在从4.5.4升级到4.6时遇到了一些问题,在升级过程中几个小时内(而其他公司的支持人员甚至尚未开始尝试弄清您是谁时),支持人员联系了我,建议了一些提示,并连接到了我的桌面,最终解决了问题。当然,如果选择开源工具,那么您就只能自行解决问题!此外,该工具还带有帮助系统,有时可能过于详细。不要忘记论坛(尤其是在cmcrossroads上),也非常擅长提供快速回答。

  • 当然还有其他很多......

  • 当然,也存在缺点(哪个软件是完美的呢?) - 例如,我希望在提交检查中也能像ClearCase一样显示文件<->问题关联,而不仅限于“推广”,但在我看来这些都是非常小的缺点。

    所以,如果你都看完了,你就能理解我是AccuRev的忠实粉丝,并强烈推荐使用它。在我看来,它是目前最好的软件配置管理工具之一,现代化、智能化、易于操作且功能强大。


    DaveOnSCM的链接为敏捷流提供了有力的支持。它在处理冲突方面表现如何?在哪些方面容易出现问题? - Petra Kahn
    那么它与Plastic SCM相比如何? - Egor Pavlikhin
    5
    对于前三点我给予负面评价。根据我的经验,我无法看出Accurev的分支与传统的分支有多大不同之处,而你也没有解释(链接也没有)。我不认为第二点是一种显著优势 - 所有其他版本控制系统都不允许用户销毁已经存在于仓库中的信息,并且确实允许仓库管理员这样做。我不同意“集成”也是任何优点:它是任何版本控制系统的必要要求,在这方面开源工具更加普及。 - ulidtko
    总的来说,商业支持和“问题”功能仍然是AccuRev对我来说真正的优势。虽然我们公司不使用后者(我也不使用),所以我无法适当地批评。 - ulidtko
    -1. 流并不是版本控制的一个合理模型...我被迫从上游获取可能会破坏我的更改。其次,Accurev与其他工具的集成并不好。特别是,你真的不能使用Accurev进行持续集成。我们自己开发了一个,但这只是浪费了大量时间。使用Gitlab/Bitbucket就简单得多了。你可以在几个小时内(也许几分钟内)开始CI。 - Matt Messersmith

    15

    Accurev很烂!它对于团队生产力的价格而言过于复杂。我曾经使用过多种软件配置管理工具(SCM), accurev的理念是伟大的,但在实际操作中并不实用。它在UI上显示得很好,但是当你在现实生活中处理时,它会成为一个痛苦的等级混乱的合并地狱。

    特别是当您重构代码时(这确实是有些人偶尔会做的事情),如果某个无效文件未被完全推广,就会陷入麻烦。更糟糕的是,如果其他人覆盖了无效文件并创建了一个同名的新文件...等等

    UI难以置信的糟糕。 诚然,无论您认为后端有多好,这都无关紧要。 您仍然会使用UI(我使用的是VS插件,还算可以,但有时会冻结IDE,很不错吧!)。

    如果您生活在80年代并计划在日常使用中使用命令行,则可以避免使用UI。 如果您有整合构建服务器,那么您当然只能使用命令行(至少我不知道有针对MSbuild / ANT / NANT的原生任务)。 我只听说他们正在与http://www.electric-cloud.com/合作。 我仍然不知道任何信息。

    Accurev是新的,因此在线上有少量可用资源,相对于svn而言,您将找到数百人完成的集成工作。

    如果您是经理,则使用Accurev会让您看起来很不错,因为它看起来非常漂亮,只要您不必处理它。

    如果您是开发人员(初级开发人员不会太在意,他/她会按照您的要求做),

    如果您是架构师,经常进行重构,重新审视架构决策等,您会发现Accurev是您最大的敌人,移动文件很困难。 如果您问我,这是非常反敏捷的。 它不流畅。

    如果你是一名构建工程师,你会发现使用Accurev非常痛苦,因为你需要让所有开发人员按照流程操作(例如:将他们的代码推广到预定发布流中)。...

    CRM应该让事情变得更容易...但我不认为Accurev在这方面做得很好..它仍然不够成熟。如果你想要成为先驱并为未来的改进而奋斗,请继续使用它。 否则,不要重复造轮子,选择一个更成熟、有更多案例和应用的产品。因为实际上,当你每天处理它的困难时,Accurev所声称提供的那些区别并不值得。


    3
    自2002年以来,我一直在使用 Ant 任务,并且成功地将 Accurev 集成到 CruiseControl 中,没有遇到任何问题。与我曾经使用过的其他版本控制工具相比,使用 Accurev 迁移代码更加容易(身份验证不基于路径名)。我认为 Streams 对于敏捷开发是最好的东西,持续的代码集成非常简单! - Chris Boran

    14
    我们已经使用AccuRev几年了,相比我们上一个工具(Razor),它是一个严肃的改进,虽然我会推荐给其他人,但它确实有一些缺点。
    优点:
    - 基于流的界面非常直观。我每隔一周创建快照,并拥有许多正在进行的开发分支。 - 在流之间移动更改非常容易,只需选择更改,将其发送到“更改调色板”,并选择目标流。 它会引导您完成需要合并的所有文件。 - 命令行实用程序很棒。 我们已经围绕它编写了大部分发布生成脚本。 - 适用于Visual Studio、Bugzilla等的集成
    缺点:
    - 正如monjardin所指出的,客户端GUI可能会很慢。 我在Windows版本中使用所有历史记录/流搜索,因为它比X11要快得多。 当然,GUI是用Java编写的,因此性能显然不是他们的首要关注点。 - 对于真正大型的数据库(我说的是超过300,000 LOC),它开始变得很慢,尽管他们显然在4.7的今天的发布中解决了这个问题。
    我们选择了更便宜的许可证,没有获取更改包功能(我无法看到它们的工作效果多好,因为单独推广变更的整个想法与持续集成相悖)。到目前为止,这没有伤害我们。
    总的来说,根据您支付的价格,这是一个不错的工具。 我们在试用期间评估了ClearCase、MKS、Spectrum和Subversion。 Subversion可能是一个不错的选择,但当我们评估时,它还很新。我以前从未听说过Plastic,但我后悔没有评估Perforce。
    此外,我了解到Qt制造商Trolltech的工程师最近已经转向使用git。 我也很想尝试一下。

    13
    我们已经使用AccuRev 4年了。我非常讨厌它,主要是因为其可怕的GUI。几年前,AccuRev向客户发送了一份调查表,并在调查表末尾提供了建议栏。我开始收集最令我讨厌的东西,下面是我的想法。不幸的是,它充满了AccuRev术语,但我认为您还是可以理解的。

    Accurev GUI可能的改进

    处理历史记录

    当查看历史记录时,开发人员最常见的需求是查看与上一个事务/版本的差异。这应该像双击一样容易访问。例如,在事务日志中双击文件应打开与上一个版本的diff。在默认组筛选器中双击文件应打开到备份的diff,在修改搜索中双击文件应打开到最新版本的diff。这将节省大量时间。

    通常开发人员很少从AccuRev内部打开文件进行编辑。相反,他们往往会对文件进行差异比较,然后还原或推广更改。因此,双击不应打开文件进行编辑,而应该将其作为diff进行比较。这可能是偏好设置中的选项,因此不同的人可以决定他们是否希望双击将文件进行diff还是打开文件。

    应该可以在流或工作区历史记录中选择两个事务并执行文件差异比较。

    重叠合并

    在流中合并重叠需要在工作区执行“深度重叠”搜索,这比在特定流中搜索重叠需要更长的时间。然后需要按重叠流对重叠进行排序,并仅合并来自特定流的重叠。应该有更方便的方式在流中执行重叠合并。例如,限制特定流的深度重叠搜索并不显示父流中的重叠。如果您在此时间锁定流下有多个流或根本没有父级,则限制深度重叠搜索的时间锁定流并不是非常有用。

    现在有一种简化的方法,涉及创建change palettes,但它仍然不方便。如果在流下有可用于重叠合并的工作区,则应在流级别提供合并菜单项。

    注释工具

    注释工具非常笨拙:

    • 使用顶部的滑块浏览不同版本会重置文件中的位置,这对于大文件来说非常烦人;
    • 应该能够直接从annotate工具中打开特定事务的历史记录。现在开发人员需要记住transaction#并在流历史记录中搜索它(还需要搜索事务所在的流)。

    流收藏夹

    当引入新的流收藏夹时,上下文菜单项“添加到流过滤器”被删除了。应该可以右键单击流并将其添加到某个流收藏夹中(第二级上下文菜单或弹出对话框)。现在编辑流收藏夹非常麻烦,尤其是当您需要拥有2组相似的流时。

    流浏览器

    将流名称复制到剪贴板应该很容易。现在你需要打开“更改流”对话框。在流浏览器中按Ctrl+C可以将所选流的名称复制到剪贴板中。 无法从流视图中复制流名称。右键单击选项卡可以复制流名称到剪贴板,或者在上下文菜单中显示“复制流名称到剪贴板”的项目。

    差异和合并工具

    仅显示行中的第一个不同字符,而不是整行差异,并且不会突出显示语法。幸运的是,差异工具可以轻松切换为外部工具,因此这只是小问题。

    其他建议

    • 在首选项中添加选项以默认启用多列排序模式。
    • 保存不仅最新的保留/推广日志,而且至少还要保存5-10个旧日志。
    • 在流或工作区视图中添加文件扩展名列,并能够对其进行排序。
    • 重新排序选项卡将是不错的。
    • 在Windows下,保留/推广/锁定消息中的字体非常小,无法阅读。增加字体大小或允许用户更改它。
    • 实现更方便的本地忽略文件的方式,环境变量并不是非常有用(用户可能希望在不同的流/仓库中忽略不同的文件集)。

    在过去的三年中,AccuRev从此列表中添加了3个功能(我已将它们删除,因为它们已经实现):

    • 大多数操作的硬编码(无法自定义)键盘快捷键
    • 使得可以一次从事务中调用多个文件的差异(在此之前,您需要右键单击每个文件并从上下文菜单中调用“与上一个版本的差异”)。
    • 向注释工具添加了文本搜索。但由于在尝试切换到不同版本时位置会重置(请参见上文),因此注释工具仍然无法使用。

    除了GUI之外,AccuRev整体存在基本缺陷:

    难以向后更新

    您无法轻松地向后更新。有accurev update -t <transaction-number>命令,但如果您更新到事务100,则无法使用accurev update -t 95更新到事务95。为了做到这一点,您需要在备份流上设置时间锁定(这将在AccuRev中引入事务),然后更新您的工作区。

    深度重叠

    当您更新时,可能会发现源状态无效而没有任何通知。这是由于重叠功能。重叠基本上是冲突(当文件被您和他们同时更改时)。如果您的工作区中有重叠,则在允许更新之前,您需要先将其合并。但是,如果您的工作区下面有流中的重叠,则不会收到任何通知,但是重叠的文件将不会在您的工作区中更新。考虑以下流结构

    [Depot Root] <- [Team stream] <- [Your stream] <- [Your workspace]
    

    假设您更改了foo.cpp并将其升级到[Your stream]。之后,您的团队中有人同时更改了foo.hfoo.cpp,比如为Foo类添加了方法,并将文件升级到[Team stream]。在您更新工作区后,您将获得foo.h的新版本(因为您没有更改它),但是您不会获取foo.cpp,因为它在[Your stream]中被重叠了。因此,您的更新将进行干净,但是如果您在此之后尝试构建,则链接器会抱怨未解决的符号Foo::NewMethod

    特别是在 Windows 10 上,这需要被解决。我唯一能够解决它的方法是通过 Windows 显示设置将一个显示器的文本显示大小增加到 150%,但这样做会使其他在 100% 工作良好的程序看起来笨重。 - Jason D.

    12

    我在现任工作中度过的最棒的一天之一,是我们放弃使用Accurev转而使用Subversion。Accurev使用了过于复杂的概念。就像上面的评论者们所说,在使用它多年后,我仍然不理解艺术品可能处于的不同状态。似乎Accurev最大的优点是其白皮书和流可视化,这两个特性对管理层非常吸引人,但这对开发人员没有任何帮助。我在不同的项目中使用Subversion、Mercurial和Git,并推荐这些工具。


    2
    在同一句话中推荐Subversion和Git是具有讽刺意味的 :) - Benjol

    12

    我长期使用Accurev,最近换了工作开始使用Perforce。我必须告诉你,我希望我能回到Accurev。我同意 - UI很慢并且存在问题。

    然而,它有一些真正令人敬畏的可视化工具。我无法相信任何人会看着版本历史浏览器而不爱上它!流浏览器是一个伟大而简单的工具,可以了解开发组织中正在发生什么。

    此外,它的管理非常简单。Accurev实际上是我最喜欢的工具之一。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接