我的初始印象是GUI工具严重缺失,然而底层引擎和分支流概念令人难以置信。
我们面临的最大困难是评估与Starteam交互的自制工具,并用新的DIY工具替换它们,或者找到并购买适当的替代品。
此外,有人使用AccuWork组件进行问题管理吗? Starteam拥有非常好的更改请求系统,而AccuWork远远无法匹配。 我们正在评估使用Accuwork还是购买第三方软件包,例如JIRA。
意见?
Accurev是一种反敏捷的工具:
Accurev的主要思想是为不同的团队使用不同的流,因此,团队1所做的更改不会影响团队2。
听起来很不错,但在现实世界中,我们都知道最终必须合并两个团队的代码,相信我,在Accurev中这是一场噩梦。两个团队在它们的数据流中所做的更改越多,每个人花费在合并上的时间就越长。
如果每个团队都在单独的分支中进行开发,并尝试在1个月的开发后合并所有内容...基本上,Accurev创造了延迟合并的代价,如果你选择将其用于超过1个团队,你将永远支付这个代价。
为了解决第1点所创建的问题,人们决定放弃跨职能团队而转向功能性团队。他们甚至提出了支持这种想法的论点,比如“知识专业化”原则。
换句话说,当你没有跨职能团队(以及敏捷团队)时,更容易拥有特定系统部分的专家,因此他们将更好地执行代码审查,并充当“信息/设计/实现专家”。
我们都知道,信息专家不仅在敏捷中是反模式,因为最好在开发中传播专业知识以避免知识瓶颈。
Accurev是我使用过的最差的工具。
如果您正在从cvs迁移,Subversion非常好。
自2010年初以来,我们公司一直在使用Accurev,之前是StarTeam和遥远的过去中的CVS。我没有使用过CVS(当时在不同的团队),所以我没有比较,而且我从未费心去了解StarTeam。
此后,我在业余时间也尝试了SVN、Git和Mercurial(Hg)的CLI和Tortoise版本。我计划在某个时候更深入地了解Git,但我发现Hg在Windows下更直观易用。总之,就像我说的,管理层让我们使用Accurev,在作为开发人员花费了一些时间来熟悉它(GUI和CLI都有),我绝对讨厌它。
本帖早些时候有人将其总结为由读过SCM书籍但从未使用过的开发人员编写的软件...我完全同意,但你也会感到他们对GUI、高效处理等具有相同水平的经验。(事实上,我看到Accurev推出了一款基于Git的新产品“Kando”...听起来他们终于意识到他们的模型有多糟糕了。但引用一位同事的话,“我不会信任同一团队编写的任何东西”...我不禁想知道是否有一个叫做“Kandoo”的婴儿湿巾产品与之相似...)
好吧,显然我不喜欢这个产品。如果你花时间阅读了这个帖子,那么显然有很多人持类似的观点。但我也想分享一些我在过去几年中对它的抱怨--顺便说一句,如果有帮助的话,我认为我们以前使用的是v4.7,现在已经用了相当长的时间了。
我对Accurev最大的不满是它的速度和效率都非常低下。注意,我没有使用GUI这个词--我尝试了GUI和CLI--慢的部分在服务器上,所以你无论如何都会遭遇麻烦。似乎我在每一个转折处都能看到那该死的模态对话框/状态栏...我切换选项卡--哎呀!:处理中,请稍候。我重新设置流--哦等等,再等一分钟。对于“更新”,我希望它会有点慢(虽然有时当它向我推送与我拥有的文件完全相同的内容时,它会让我感到恼火)。我更改目录浏览路径...处理、处理,“哦,你想再进入一个子文件夹”...让我再处理一下。你懂的。
这是我的唯一不满吗?当然不是。
1)对于合并工具,我已经勾选了“忽略空格”选项好多年了,但我只记得它只在一个情况下有效过(例如,我们比较两个版本的JSP文件时,我把空格转换成制表符或修剪了一些尾随空格等)。为什么这是个问题?因为对于每一个想要查看真正变化的其他开发人员来说,这变得非常痛苦。如果他们不能正确地实现这一点,那就别在那里放这个该死的选项。(注意:使用WinMerge作为外部比较工具,带有适当的设置,运行得很好)。
2)我曾经遇到过这样的情况:将一个文件检入一个流中,然后需要将完全相同的文件副本放入另一个流中(使用相同的问题#),结果导致它抛出了一个脾气暴躁的错误。如果我使用错误的问题#,那么它会毫无问题地检入。这可能是个特例(也许是由于我们公司的其他糟糕流程决策导致的),但出于完整性的考虑,我还是想提一下。
3)所有的历史记录都存储在服务器上。换句话说,如果你享受等待它切换标签、创建/重新设置工作区和更新,那么当你想查看历史记录时,你会得到更多同样的体验。
4)它的排除规则不仅很糟糕,而且很差劲。在Windows下,你实际上需要创建一个环境变量,用来创建一些不想显示的文件的排除规则。它不支持正则表达式。我看到了一些其他的SCM提供了更好的方法(我喜欢Hg中使用的ignore文件。Git中也有类似的东西)——不仅支持正则表达式和全局通配符模式,而且在文件中定义它更加友好,也更容易编辑,而不是将它们放到一个环境变量中。不仅如此,而且它似乎在排除过滤器方面不是那么可靠。我们的项目定义方式是将构建文件夹放在项目文件夹下(该文件夹是受源代码控制的),尝试排除构建文件夹下的所有文件夹似乎不起作用——即使在设置规则之后,大多数文件仍然显示在我的“External”筛选器中。
5)它的检入流程(称为“Promote”)似乎也非常慢、低
我还可以继续说下去,但是我得停在这里了……因为这篇文章太长了。相反,让我用自己的方式总结一下Accurev:在我们试图快速修复问题时,不得不等待所有这些缓慢烦人的“Stat processing”等对话框之后,我为他们想出了一个新的口号:“AccuRev:当秒数很重要时,你的修复只有几分钟远。”
由于管理层不会放弃Accurev(我知道他们不会接受没有企业支持的任何东西,但我已经恳求他们考虑其他任何东西:SmartGit...Kiln...Perforce...),所以我一直在使用TortoiseHg来本地版本控制我的文件(除了Accurev之外)。这需要更多的工作量。但对于那些被Accurev困扰的人来说,它使生活变得更加轻松。您将获得:更好的差异管理——在“accurev update”之后查看和审查代码更改变得更加容易,无需等待服务器10年即可查看某些历史记录,可以直接在您和另一个开发者之间共享(假设他们也安装了它),如果您在试图脱离Accurev的合并地狱(“重叠”文件)时意外擦除了某些内容,则可以恢复/还原您的更改,如果您能让您的团队其他成员也使用它,则会获得更多好处。
编辑:忘记提到,在与我们的构建工程师交谈期间,我被告知尽管Accurev有一个Java API可供开发,但显然需要购买某种额外的许可证。我无法确认这一点,因为a)我无法在Accurev的网站上找到任何定价*,b)我非常怀疑他们会在工作中告诉我……
*有点奇怪,因为我可以很容易地找到Perforce、Kiln、StarTeam和SmartGit的某种粗略定价。当一些产品不会提前列出任何价格时,我通常会感到不安,我想这也不应该太让我惊讶,Accurev属于这一类别…
@Steveth
界面很糟糕...但流模型非常创新。
能够为一个新项目从主干流创建一个流,并有5个开发人员在其上工作,而在将该流合并回主干时没有任何形式的合并冲突,在Accurev中是前所未有的,但它在实践中运行良好。