Clickhouse优点缺点:ClearCase优点 /缺点

因为我目前正在努力学习 IBM Rational ClearCase,所以我想听听您的专业意见。

我对与其他版本控制系统(如 Subversion 或 Git)相比的优点 / 缺点特别感兴趣。

110

您可以在我的 SO 答案中找到 ClearCase 和 Git 之间的很好的比较:
What are the basic ClearCase concepts every developer should know?”,说明了 ClearCase 的一些主要区别(以及 ClearCase 的一些缺点)

以文件为中心的操作

ClearCase 最重要的缺点是其旧的“以文件为中心的”方法(与 SVN 或 Git 或 Perforce...中的“存储库为中心的”方法相反)。
这意味着每个签出或签入都是每个文件完成的。原子操作是在文件级别进行的。

每个文件操作意味着:慢速递归操作(如recursive checkoutrecursive "add to source control",甚至是clearfsimport)。
A快速 LAN是必需的,以减轻该聊天协议的副作用。

集中式 VCS

要考虑的另一个方面是它的集中式方面(即使它可以通过其多站点复制 VOB 功能进行“分发”)
如果网络不允许访问 VOB,则开发人员可以:

仍然在快照视图中工作(但只有被的文件)

等待网络的恢复,如果他们正在使用动态视图

昂贵的分布式 VCS 选项

您可以通过复制 Vob 来获得一些分布式 VCS 功能。
但是:

你需要一个特殊的许可证才能进入.

该许可证价格昂贵,并且增加了常规许可证的成本

任何使用复制 vob 的 vob(admin vob,admin pvob,...)也必须被复制(这意味着一些与分布式开发不直接相关的项目仍然需要支付多站点许可证...)

旧的和不用户友好的 GUI

GUI 是非常古老的学校和不切实际的(90 年代中期的 MFC 外观,完全同步的 GUI,这意味着你必须等待刷新之前点击其他地方):浏览基线时,你不能快速寻找一个特别的。

Unix 上的 GUI 与 Windows 上的 GUI 不完全相同(最新的 7.1 版本更好,但还没有)

安装过程相当复杂(尽管 CC7.1 引入的最新 Installer Manager 现在是 Windows 或 Unix 上的一致 GUI,并且简化了过程)

唯一真正丰富的应用程序只开发了 CCRC(远程客户端)

UCM 不一致和一致性

正如“How to Leverage ClearCase’s features”中提到的,动态视图非常棒(一种通过网络查看数据而无需将其复制到磁盘的方法),但主要功能仍然是UCM:如果您有一个具有复杂工作流程的大型项目,它可能是一个真正的资产。

这方面的一些缺点:

组件之间的依赖关系没有得到很好的管理,深度超过一个(因为“parasite baseline”的错误)

UCM 仍然有一些一致性和不一致性,如documented in CM Crooads

具有 Base ClearCase 的有限策略

使用 ClearCase 而不使用 UCM 意味着必须将策略定义为:

创建分支(否则任何人都可以创建任何分支,你最终会得到他们的一个 gazillon,合并工作流的噩梦)

标签(否则你忘了标签的一些文件,或者你把一个标签,你不应该,或者你“移动”(喘气)标签从一个版本到另一个:至少 UCM 基线不能移动)

定义变更集。变更集仅与 UCM 活动一起存在。使用 Base ClearCase,您将被简化为聪明的“cleartool find”请求...

没有应用程序权限

ClearCase 权限管理完全建立在系统权限上。
这意味着您需要将用户注册到正确的系统组,当您必须输入 IT 服务的票证以便他们进行正确的注册时,这并不总是容易做到的。
添加到异构环境(Windows 上的用户和 Unix 上的服务器),并且您需要在 Unix 上注册您的用户0 登录名称之间的某些对应关系

无高级 API

只有 CLI 是完整的(“cleartool”是 ClearCase 命令行界面),这意味着任何脚本(在 Perl 或其他语言中)都包含解析这些cleartool命令的输出)

ClearCase Automation Library (CAL)存在,但非常有限

Java API 存在,但仅适用于 CCRC 客户端的 Web 视图。

查看存储不容易集中 / 备份

视图存储相当于 SubVersion 的“.svn”,exept 每个视图只有一个“视图存储”,而不是一个 SubVersion 工作区的所有目录中的许多.svn。这很好。

不好的是,视图中的每个操作(一个简单的“ls”,检出,检查,...)将触发一个网络请求到管理视图服务器的view_server进程。
2 个选项:

在工作站上声明您的视图存储:非常适合可扩展性,您可以在不增加 LAN 负担的情况下拥有任意数量的视图:所有通信都直接在您的工作站上完成。但是如果那台机器死在你身上,你就失去了你的观点

在集中式服务器上声明您的视图存储:这意味着所有 view_server 进程都将在那里创建,并且任何用户对视图的所有操作都必须与该服务器通信。如果基础架构是“正确的”(特殊的高速 LAN,专用服务器,持续监视),则可以完成此操作,但实际上,您的 LAN 将不支持此模式。

第一种模式意味着:您必须备份自己正在进行的工作(私人文件或签出的文件)
第二种模式意味着:您的工作站可能不可用,您只需登录另一个即可取回您的视图(执行快照视图的私人文件)

关于动态视图的侧面讨论:

要添加到“动态视图”方面,它有一个优点(它是动态的)和一个缺点(它是动态的)。
动态视图非常适合设置一个简单的环境,以便在小型团队之间快速共享小型开发:对于小型开发工作,动态视图可以帮助 2 或 3 个开发人员彼此保持联系,当您提交时,立即看到其他视图。

关键是,出于正确的原因,您可以同时使用两者。

注意:然后通过小团队,我的意思不是“小项目”。ClearCase 最适合用于大型项目,但是如果要使用动态视图,则需要设置“任务分支以隔离每个分支的小开发工作:这样,“小团队”(您的大团队的一个子集)可以有效地共享其工作。

访问数据的其他方式除了快照视图,这意味着它是一个很好的工具,只是“看到”文件(例如,您可以使用动态视图来调整其配置规范,直到您看到所需的内容,然后将这些选择规则复制到您通常的快照视图中)

合并的侧视图:您可以使用快照视图,但是对于合并,您可以使用动态的“姐妹视图”(“姐妹”与“相同配置规范”中的“姐妹”),以避免由于签出的文件(您当前正在处理快照视图)或由于快照视图不完全是最新的。合并完成后,您将更新常规快照视图并继续工作。

直接在动态视图中开发并不总是最好的选择,因为所有(非签出)文件都是通过网络读取的
这意味着您的 IDE 所需的 dll 或 jar 或 exe 将通过网络访问,这会大大减慢编译过程。
可能的解决方案:

一个包含所有内容的快照视图

其中包含 dll 或 jar 或 exe 的快照视图(每五分钟不更改的文件:每天更新一次),以及仅显示源的动态视图。

35

成本是一个相当明显的缺点。不仅是许可证成本,还有 ClearCase 大师的工资成本。我所知道的几乎每家使用 ClearCase 的公司似乎都至少有一个人,其唯一目的是驯服不守规矩的野兽。

需要全职保姆的情况非常复杂,这一事实也令人担忧。

27

绝对是系统的噩梦。这让我希望我们可以回到 VSS!(不要介意任何现代源代码控制系统,如 Subversion 或 Git!)

这是slooooow

如果您使用动态视图,并且网络出现故障,则无法访问源的工作副本。您只能坐下来等待修复它。

如果您使用snapshot视图,您似乎总是遇到冲突和“”文件,因此您的工作副本中的文件永远不会与源存储库中的文件完全相同

每当您尝试大型更新或交付操作时,总是失败,这需要您的 ClearCase 专家花费几个小时 / 天的时间来弄清楚它。哦,是的,您必须有一个专门的全职 ClearCase 专家!

当它失败时,你经常不能回滚操作,所以你被一个正在进行的操作卡住了,开发人员被阻止了

当你看过去漂亮的(?)图标时,GUI 非常差-就像无法调整窗口大小以查看完整的文件路径一样!

他们的支持人员非常不愿意解决任何问题。他们的第一反应总是“这是设计”和“你能解决它吗?”如果他们最终提供了一个解决方案(经过多次争论),这将是最直接问题的最基本的解决方案。

基本上,它像地狱一样缓慢,复杂和不可靠。哦,我有没有提到它贵得离谱?他们可能出售它的唯一方法是与从未使用过产品也永远不会使用的决策者交谈!我很确定世界上没有开发人员会购买它。

25

原子提交和变更集是我对 ClearCase 的最大抱怨。假设您检查了五个文件,作为错误修复或重构的一部分。然后发现有些事情搞砸了,您需要还原。祝你好运,找到它们是哪五个文件以及每个需要使用哪个版本。但是让我们退后一步。您刚刚完成了这五个文件的编辑,现在是时候进行最后四个更新了。

有时我们会丢失一个完整的新目录,其中包含需要签入的文件,但是我们不想在完成之前将其签入。现在还很早,一切仍然不稳定,那么为什么要签入可能会很快删除的内容呢?好的,到目前为止。现在是时候签入了。您将新创建的文件夹添加到源代码管理中。好吧,ClearCase 不是递归的,因此只有单个N 文件夹

ClearCase 拥有文件和文件夹,所以你不能修改任何东西,除非你先签出它。eclipse 插件带走了很多麻烦在这里。我不能告诉你我在 vi 中打开一个文件多少次进行快速更改,却发现我忘了先签出它。结帐也不是递归的。

如果没有变更集,更新可能会非常缓慢。当您使用快照视图进行更新时,每个文件都会更新,而不仅仅是修改后的文件。我处理了一个包含 20,000 多个文件的项目。我会远程访问我的工作机器,启动更新,然后上班;喝咖啡;在我的办公桌结束时走到我的办公桌前。这听起来可能有些夸张,但可悲的是事实并非如此。

除非您属于一个非常小的团队,否则动态视图是可怕的。如果是这种情况,为什么还要使用 ClearCase?我已经看到无数人的视图被冲洗,因为有人签入了了其他所有人的视图的文件。您应该始终更新和合并自己视图上的任何冲突。这样,更改只会影响您。使用动态视图,您无法在推回之前进行合并;您只是承诺和希望。

我知道成本可能不是一个大问题,但是为公司赚钱的开发人员会喜欢在有趣的活动或新设备上花费 $50k-$100k(取决于 ClearQuest 许可证,这是一个常见的补充)(椅子,显示器等)。IBM 建议让员工继续使用 ClearCase。为什么不重新利用这些人为公司创造收入,而不是确保事情不会崩溃和燃烧?

我听说过不切换的一些原因:

学习需要时间和金钱

学习 SVN 或 Mercurial 应该不超过一天。只有 ClearCase 建议管理员与开发人员有一定的比例。

移民将是痛苦的

这就是工具存在的原因:cc2svn

这不是那么容易with Mercurial

安全

SVN AFAIK 中没有已知的漏洞,开发团队致力于修复任何快速发现的问题。似乎可以使用 SVN。

之后没有真正的生产力提高

尝试在没有变更集的情况下跟踪 bug 需要很长时间。我喜欢能够回滚直到我看不到 bug。你不能在 ClearCase 中做到这一点。

多站点

WANdisco 解决了这个问题。虽然不是免费的。

ClearCase 唯一比其他分支做得更好的是分支单个文件,同时将其他文件保持在与另一个分支相同的轨道上。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(656)
抽象类实例化:用于实例化其他类的 Java抽象类(java chicken)
上一篇
Cca胶原蛋白水乳:在R中的CCA图中添加标绘符号(cca in r)
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(51条)