因为我当前正在努力学习IBM Rational ClearCase,所以我想听听您的专业意见。
与Subversion或Git之类的其他版本控制系统相比,我对优点/缺点特别感兴趣。
因为我当前正在努力学习IBM Rational ClearCase,所以我想听听您的专业意见。
与Subversion或Git之类的其他版本控制系统相比,我对优点/缺点特别感兴趣。
Answers:
您可以在我的SO答案中找到ClearCase和Git之间的良好比较:
“每个开发人员都应该了解ClearCase的基本概念是什么? ”,说明了一些主要差异(以及ClearCase的一些缺点)
ClearCase最重要的缺点是其旧的“以文件为中心”的方法(与SVN或Git或Perforce等中的“以存储库为中心”的方法相反),
这意味着每个文件的每次签入或签入都是完成的。操作的原子性在文件级别。
将其与非常冗长的协议以及开发人员工作站和VOB服务器之间可能具有多个节点的网络结合起来,您最终可能会得到一个相当慢且效率低下的文件服务器(ClearCase是其核心)。
每个文件的文件操作意味着:缓慢的递归操作(例如,递归检出或递归“添加到源代码管理”,即使按clearfsimport
)。
甲快速LAN是强制性的,以减轻健谈协议的副作用。
另一个要考虑的方面是集中化方面(即使可以使用其多站点复制的VOB功能进行“分发”)
如果网络不允许访问VOB,则开发人员可以:
您可以通过复制Vob来具有一些分布式VCS功能。
但:
如“如何利用ClearCase的功能”中所述,动态视图很棒(一种通过网络查看数据而不必将其复制到磁盘的方法),但是主要功能仍然是UCM:如果您拥有,则可以成为真正的资产。具有复杂工作流程的大型项目。
在这方面的一些缺点:
不使用UCM而使用ClearCase意味着必须定义以下策略:
cleartool find
”请求...ClearCase权限管理完全基于系统权限。
这意味着您需要将用户注册到正确的系统组,这在您必须输入IT服务票证以便他们进行正确注册时并不总是那么容易。
再加上异构环境(Windows上的用户和Unix上的服务器),您需要在Unix和Windows上注册用户!(具有相同的登录名/组名)。除非您在两个世界之间放置某种LDAP对应关系(例如Centrify)
cleartool
”是ClearCase命令行界面),表示任何脚本(使用Perl或其他语言)都由解析这些cleartool
命令的输出组成视图存储相当于SubVersion的“ .svn”,例如每个视图只有一个“视图存储”,而不是SubVersion工作区的所有目录中都有许多.svn。那很好。
不好的是,视图中的每个操作(简单的“ ls
”,检出,检查等)都会触发网络请求,该请求请求管理视图服务器的view_server进程。
2种选择:
第一种模式意味着:您必须备份自己进行中的工作(私有文件或已检出文件)
,第二种模式意味着:您的工作站可能不可用,您可以仅登录另一个以获取视图(对于私有文件执行)快照视图的文件)
关于动态视图的侧面讨论:
要添加到“动态视图”方面,它具有一个优点(动态)和一个缺点(动态)。
动态视图非常适合设置一个简单的环境,以便在一个小型团队之间快速共享一个小型开发:动态视图可以帮助2或3个开发人员持续保持联系,并在提交中断时立即查看其他观点中的某些东西。
对于更复杂的开发工作,快照视图提供的人为“隔离”是可取的(您只有在刷新或“更新”快照视图时才能看到更改)
对于真正不同的开发工作或过程,仍然需要一个分支来实现真正的代码隔离(有时需要合并,ClearCase处理得很好,尽管很慢,但逐个文件)
关键是,出于正确的原因,您可以同时使用两者。
注意:小团队并不是指“小项目”。ClearCase最适合用于大型项目,但如果要使用动态视图,则需要设置“任务分支”以隔离每个分支的少量开发工作:这样,“小型团队”(大型团队的子集) )可以高效地工作,并在其成员之间快速共享其工作。
如果您在每个人都在做什么的“主”分支上使用动态视图,则任何签入都会“杀死您”,因为它可能会引入一些无关的“构建中断”用您当前的开发工作,
那将是动态视图的不良用法,并且会忘记其其他用法:
在动态视图中直接进行开发并不总是最好的选择,因为所有(未检出)文件都是通过网络读取的。
这意味着可以通过网络访问IDE所需的dll,jar或exe,这会大大降低编译速度。
可能的解决方案:
成本是相当明显的缺点。不仅是许可证费用,还包括ClearCase专家薪水的费用。我知道的几乎所有使用ClearCase的公司似乎都至少有一个人,其唯一目的是驯服那些不守规矩的野兽。
它非常复杂,需要专职保姆,这一事实也令人担忧。
系统的绝对噩梦。我希望我们能回到VSS!(不要介意任何现代的源代码控制系统,例如Subversion或Git!)
基本上,它像地狱一样缓慢,复杂且不可靠。哦,我有提到它贵得离谱吗?他们可能出售该产品的唯一方法是与从未使用过该产品且从未使用过的决策者进行交谈!我很确定世界上没有开发商会购买它。
undo checkout
所有内容。注意:对于预想到的复杂合并(由于自上次合并以来的重要时间流逝),“合并分支”可能是隔离合并工作的好选择。一旦所有内容都整合到了那里,就可以简单地合并到dev分支中,从而完成了该过程(注意中的注意:最后的建议不是特定于ClearCase的,并且可以应用于任何VCS工具)。
原子提交和变更集是我对ClearCase的最大抱怨。假设您作为错误修复或重构的一部分签入了五个文件。然后发现有些东西弄乱了,您需要还原。祝您好运,找到它们是五个文件以及每个文件需要使用的版本。但是,让我们退后一步。您刚刚完成了对这五个文件的编辑,现在该提交了。前四个通过都很好。最后一个需要大规模合并。其他四个文件已经签入。它们不会等待您在上一个文件中完成必要的更改。我希望没有人更新或使用动态视图。持续集成构建服务器也将失败。
有时,我们会在一个全新的目录中放入所有需要检入的文件,但是直到完成后,我们才希望将其检入。现在还很早,一切仍然不稳定,所以为什么要检查一下内容以便很快删除?好的,到目前为止。现在是时候签入了。您将新创建的文件夹添加到源代码管理中。好吧,ClearCase不是递归的,因此只能签入单个文件夹。使用SVN,可以选择该文件夹及其下的所有内容。开发人员需要记住添加所有内容,否则,将丢失许多文件。
ClearCase拥有文件和文件夹,因此除非您先将其签出,否则您无法修改任何内容。eclipse插件在这里消除了很多麻烦。我无法告诉您我在vi中打开文件进行几次更改的次数,只是发现自己忘记先将其签出。结帐也不是递归的。
没有变更集,更新可能会非常缓慢。使用快照视图更新时,每个文件都会更新,而不仅仅是已修改的文件。我从事的项目超过20,000个。我将远程进入我的工作机,开始更新,然后开车去上班;喝咖啡 正在整理时去我的办公桌。听起来可能有点夸张,但事实并非如此。
除非您的团队很小,否则动态视图非常糟糕。如果是这样,为什么还要使用ClearCase?我看到无数人的观点被削弱,因为有人签入了破坏其他所有人观点的文件。您应该始终根据自己的观点更新和合并所有冲突。这样,更改只会影响您。使用动态视图时,您不能在向下推之前合并下来;你只是承诺和希望。
我知道成本可能不是大问题,但是为公司赚钱的开发人员将喜欢在有趣的活动或新设备上花费$ 50k- $ 100k(取决于ClearQuest许可,这是常见的补充)(椅子,监视器等)。IBM建议配备人员以保持ClearCase的正常运行。为什么不重新安排这些人的目的来为公司创造收入,而不是确保事情不会崩溃和燃烧呢?
我听说过不切换的一些原因:
ClearCase唯一优于其他文件的是分支单个文件,同时使其他文件与另一个分支保持相同的轨道。
我在Clearcase中所做的一切似乎总是 很难。而我从未在其他系统上留下过印象(有时可能是CVS除外)。
我使用了SVN,CVS,Clearcase和Mercurial。
我在ClearCase上的经历是一场灾难,我将在Don的第二句话中说,这需要一位常驻专家-不幸的是,我们有不止一位。我曾经使用过CVS和其他版本控制系统,对这些概念很熟悉,但是我发现ClearCase文档令人费解,不得不多次寻求帮助。不同的专家给我提出了相互矛盾的建议,以至于我们实际上打破了CD。也就是说,在UNIX shell中发出ClearCase命令后,“ cd”命令失败,并显示一条错误消息。
版本控制系统的基本任务非常简单。坦率地说,我认为使用与他人配合使用的文件方案,只要打六个命令就足够了。在我看来,ClearCase似乎是营销主管故意使事情复杂化的结果,以使该产品看起来精致而强大。我听说它可以配置为以简单,安全,可靠的方式运行,但是再次需要专家的服务-开箱即用,就像电动瑞士军刀。
我所经历的一切与ClearCase的能力有关的一切都是效率低下,丑陋,过于复杂,缓慢,令人困惑,昂贵且不便。
似乎吸引了管理人员和工程师的只是一切都错了。
该死的,IBM和Rational必须有惊人的销售人员来销售如此糟糕的产品。
由于此处给出的许多原因,我们只是从CC迁移到Git。我想补充一个理由,避免使用CC或任何其他商业源代码控制系统。
您的重要业务数据是代码,其版本历史以及所有元数据(例如,提交注释,谁签入以及何时签入)。
所有软件的使用寿命有限。当您引入一个吞噬重要业务数据的新系统时(无论是代码,错误,客户数据还是其他),您应该总是问自己:如何再次获取数据?如果您不能回答该问题,则不应引入该系统。
当我们迁移出去时,我们失去了大部分历史和所有元数据。本质上,我们只有对应于已发布版本的历史记录,但是有关丢失了哪些更改以响应客户的请求的信息(我们在客户支持和错误凭单系统中拥有该数据,因此并没有完全丢失这些数据,而是与源代码不见了)。
从短期到中期,这对于我们来说将是一件令人烦恼的问题。在几年的时间里,它不再重要了,但是也许在1-3年内就变得重要了。
(有一些商业工具可以将CC迁移到其他SCM,但是它们不能满足我们的需求,我怀疑这样做是否可行。我们所做的最小限度的出口花费了足够长的时间。)
得到的教训是:切勿将重要的业务数据委托给专有系统。
没有原子提交
签入文件后,由于不支持原子提交,很难恢复到特定状态。检入多个文件时,每个文件都会得到一个新的修订版(类似于CVS),而不是检入本身。我认为这是一项至关重要的功能,因为您几乎不希望还原单个文件,而是完成提交操作(应映射任务)。使用ClearCase,您只能通过使用Labels恢复到某些状态。在实践中,每次签入都使用ClearCase标签是过大的,因此无法完成。
笨拙的用户界面
ClearCase Explorer的GUI只是一个大笑话。易用性和难看的外观。没有提供不同且通常必要的功能(例如,递归检查工件上的工作)。与cygwin一起使用的命令行工具cleartool更好,但是仍然有些功能不可用,例如以递归方式将新文件/文件夹添加到源代码管理中。如果我读了50行代码长的脚本来解决此问题,我就不得不笑了。
高级管理工作
管理ClearCase野兽远非显而易见或轻巧(与其他SCM系统(例如CVS,Subversion或Git)不同)。期望有大量的专用ClearCase专家来保持运行。
糟糕的表现
没有什么比让您的开发人员在与SCM工具进行接口连接时等待更糟糕的了,就像在启用手刹的情况下驾驶一样。它减慢了您的大脑以及您的工作速度。10K工件需要大约30分钟才能获取到快照视图中的新文件。相同数量的更新(未更改构件)大约需要5分钟。在进行大量实验并在不同的最新视图之间切换时,意味着要等待很多时间。当您处理文件并想要签入或更新它们时,情况甚至更糟。检出,检入和添加到源代码控制周期大约需要10-15秒,这显然是一场噩梦。当您重构重命名/移动类型或方法时,它会变得很烦人(许多文件可能会受到影响)。
缺乏对分布式开发的支持
如今,软件开发通常是分布式的(开发人员遍布全球,从事同一产品/项目)。ClearCase绝对不适合此操作,因为它非常不适用于离线工作。进行检出(在可以编辑文件/文件夹之前进行的操作)要求您已网络连接。在这里,您可以使用hijack选项,但这是一项变通办法,它是一项功能(您基本上只是在文件系统上解锁文件)。如果您的开发站点离ClearCase服务器很远,那么签入/签出延迟可能会大大增加,以致根本无法使用。有一些解决方法,例如使用ClearCase Multisite(scm DB复制技术),但是您必须为此支付额外费用,并且管理起来并不容易。
git替代
尽管是开放源代码的狂热拥护者和支持者,但我仍然愿意为优质软件付费。但是,看看IBM怪兽ClearCase,我不会在这里投入我的钱,它具有所有这些已讨论的缺点,此外,IBM似乎也没有投资来显着改善其产品。最近,我看了一看Git scm,它看起来非常好,特别是因为它的分支+合并功能,其中ClearCase具有主要优势。
该信息取自http://www.aldana-online.de/2009/03/19/reasons-why-you-should-stay-away-from-clearcase/
ClearCase的缺点-此处最深入的帖子的补充。
合并工具不值得。它几乎对您没有帮助,记住您所做的任何决定,只是一个荣耀的区别。
合并工具必须检出目录才能检查是否需要合并。它有点疯狂。
我在工作中使用BitKeeper(假设为Git),即使有冲突,即使是有命令行,合并两个存储库也是如此琐碎且用户友好,而拥有大量GUI工具的ClearCase则是一个漫长而费力的过程,而且极易出错。
所有GUI工具都需要大量延迟。即使查看文件上可以执行的操作也需要高速连接。因此,由于对网络的需求量非常大,因此在ClearCase工具中右键单击在家工作的文件可能需要一两分钟的高速互联网连接。
如果某人的视图规格与团队不同,则可以完全搞乱存储库或签到。真是太疯狂了,没人能只签出一些分支。他们需要适当的视图规范,这些规范会附带给他们合适的东西。整个概念可以很好且灵活,但是在99%的时间中,它只会引起很多痛苦。我是否提到过,由于CC工具不接受UTF-8,所以您无法通过Microsoft Outlook通过电子邮件发送您的规范,因此您不能将其复制粘贴?
关于CC,我绝对无话可说。我在2家公司使用了2年,然后心跳下来,一直感到很高兴。仅在家中尝试自己的项目也是不可能的,因此您仍将在家中学习SVN或Git,并被迫在工作中经历ClearCase的痛苦。我认识的人都没有自愿使用CC。他们之所以使用它,是因为某个工作中的经理认为CC是拯救之路,并迫使所有人都迁移到它。实际上,我的上一家公司是从CVS迁移到ClearCase的,然后是从ClearCase迁移到SVN的一年。就是那个讨厌。
ClearCase不仅仅是让您拒绝的一件事。这就像住在充满蚂蚁的房子里。每只蚂蚁充其量只是给他们带来的不便,但这种侵扰会使您发疯。
我正在尝试将一些评论整合到此处的实际帖子中。我不是真的要在这里说服您,一个要比另一个好,除了要提出几点:
ClearCase是一个很好的工具,但是它很复杂工具。没有解决方法-它没有“轻松安装”模式。:-)从技术的角度来看,git或SVN不能做ClearCase不能做的(尽管术语经常不同,因为开放源代码项目往往只是发明已经存在的新分类法),但是某些事情肯定更容易/难于给定系统,具体取决于其设计。如果您从SVN或CVS中检出存储库,则ClearCase的“快照”视图基本上是相同的-它是计算机上源代码的本地副本,并带有指向中央服务器的指针,这些指针用于查询版本历史的工具,创建这些视图后,便无需使用任何与ClearCase服务器的网络连接,就可以使用这些视图,并且可以“回收” 例如,当您要移到另一个分支上工作时,它们可以避免再次下载整个存储库。“动态视图”基本上是ClearCase的发明,并且是LAN的标准操作模式。它们看起来与签出SVN信息库的方式相同,但是它们实际上不会复制任何文件,除非您进行更改。这样,视图立即可用,但是如果主Clearcase服务器不可用,并且显然不适合通过高延迟连接使用,则显然无法使用该视图。它们还具有能够作为网络驱动器安装在任何可以访问创建它们的服务器的机器上的便利,因此,如果Windows工作站死了,您可以登录到另一个计算机上,安装视图并获取回去工作,
此外,这也应有其自己的段落。它是我一生中使用过的最好的合并工具。我坚信,由于缺乏高质量的合并工具,在SCM中出现了许多不良做法,因此CVS用户从未学会正确使用分支,并且对分支的担忧已经蔓延到了今天,没有特别好的理由。
好的,所有这些,如果您正在寻找不使用ClearCase的原因,虽然我认为这是错误的处理方法,但并不难找到。确实,您应该提出使用ClearCase的充分理由,而不是不使用ClearCase的理由。假定ClearCase是用于该工作的太多工具或过于复杂的工具,那么您应该遇到任何SCM情况,然后查看您是否有某种情况鼓励使用它。拥有IBM或Rational徽标不是很好的理由.. :-)
除非您对以下所有语句都同意,否则我什至不会考虑ClearCase:
我的经验主要受CC,CVS和SVN的限制。原则上,CC具有技术能力,企业就绪性,并且在功能上可以与任何现代VCS相媲美。但是它有一些缺陷,使其在任何以人为本的环境中都无法使用。对于面向流程的环境,它可能更合适,尽管我怀疑这样的环境本身是否合适。也许不知道,在军事,宇宙或医学软件中。无论如何,我相信即使对于这些领域,也有适当且更友好的工具。
除了具有技术能力的VCS,CC还具有一些独特的优势:
我认为,除了最后一个以外,它们的使用受到限制。而且它们无法弥补缺陷。动态视图理论上不错,但在实践中并不总是可用。在其他VCS中,版本树的使用要少得多,而在CC中则是必需的,因为分支的增加(请参见6)。据我所知,触发器非常详细且功能强大,但我认为对于大多数实际任务而言,SVN挂钩已经足够了。现在,有关主要涉及可用性的缺点:
cleartool
(在7.1版之前),仅留下动态视图。从外部看,ClearCase似乎非常强大。但是实际上,仅仅是基本工作流程需要使用的命令和选项的数量如此之多,以至于它们被隐藏在一些别名或脚本的后面,并且最终导致了某些功能不如CVS,并且具有Visual Source的可用性。安全。每当您想做一些超出脚本允许的复杂性的操作时,您都会感到不适。
将它与Git进行比较,从外部看,它看起来很复杂,但是使用它一周后,您会感觉完全处于控制之中。存储库模型易于理解,并且功能强大。因为很容易获得基本要点,所以在日常工作流的表面之下进行挖掘实际上很有趣。
例如,弄清一个琐碎的任务,例如如何仅在快照视图中查看文件的非HEAD版本,这花了我几个小时,而最终我得到了一个完整的hack。也不是令人愉快的黑客行为。
但是在Git中,搞清楚看似复杂的任务,例如如何以交互方式仅提交一些更改(然后将其余更改留待以后使用)是一件很有趣的事情,而且我一直都觉得VCS允许我组织代码并历史记录以适合我的方式出现,而不是历史记录是我们如何使用VCS的偶然事件。“ Git意味着永远不必说'你应该拥有'”。
在我的工作中,即使在ClearCase中,我也将Git用于各种轻量级任务。例如,我做TDD,每当一堆测试通过并且要重构时,我都会致力于Git。当任务最终完成时,我签入了ClearCase,Git可以帮助我准确地查看正在更改的内容。只需尝试让ClearCase在两个文件之间产生差异即可-不能!使用Google找出人们试图解决此问题的各种方法。这是版本控制应立即提供的功能,应该很容易!CVS已经有几十年了!
在我看来?有理由吗?如果您虔诚地遵循RUP。
性能。
ClearCase功能强大,稳定(如果正确维护和监督),但速度很慢。有时是地质。
动态视图视图会导致可怕的构建时间,快照视图可能需要花一些时间才能更新(大型项目的午餐时间)或结帐(一天回家)。
开发人员在进行任何工作之前将花费1/2的时间来弄清楚clearcase,一旦他们弄清楚了,他们将在本地安装git并仅根据需要推送到clearcase repo。
您必须聘请专门的Clearcase管理员。
我建议将SVN用于工具集,将Git用于扩展/工作流。我还建议尽可能避免使用CC。(不算钱,使用起来是如此痛苦,需要全职管理员的事实完全是个笑话)
我最近不得不纠缠于类似的情况。也许你可以从我的故事中学到东西。
我刚被分配到的团队正在使用繁重的工具,而且容易出错。我首先尝试通过我选择的工具和流程出售它们。这项尝试惨遭失败。我很吃惊,他们会选择这样一个繁重的环境,而不是既轻松又有效。事实证明,他们希望受到纪律处分,并且使用痛苦的过程使他们感到受到纪律处分。听起来很奇怪,但这是事实。他们也有很多其他误解。在弄清楚它们的用途之后,我们实际上坚持使用相同的工具套件(Serena),但是对它的配置进行了巨大的更改。
我对您的建议是弄清楚对您的团队至关重要。除非您对他们的兴趣说话,否则在ClearCase上翻录将无济于事。此外,找出他们为什么不想使用替代品。基本上收集一些需求并根据您的需求选择工具。取决于您的选择,谁知道,毕竟,Clear Case可能最终是最佳选择。
我并不完全反对ClearCase(它确实具有它的优点),但是列出了缺点:
对我来说,最大的故障是性能(尤其是在VOB是多站点或异地时)以及可能较长的停机时间。
如果您像我一样,作为一家大公司的一部分在一个相对较小的办公室中工作(没有现场IT),那么Clearcase服务器宕机可能会使您在工作日的大部分时间浪费在非生产性工作上,同时还会找到合适的人修复它。
最重要的是,仅当您确实需要它进行工作时才使用它,并确保拥有强大的IT预算来维护它。
从7.1版的新版本开始,如果您愿意,CC会提供原子检入作为功能。就我个人而言,我真的不想要它,但显然有人认为这是“基本功能”。我从不希望一次大批量生产这种庞大的版本。再说一次...如果您要打开它。
所以...不再是争论。
在过去的4年中,我们与50多个开发人员一起使用了与ClearQuest(灾难恢复跟踪/变更请求系统)集成的UCM ClearCase。我们有50多个UCM项目,超过一千个流处理了超过35,000个DR和更改请求。在此期间,我们正式进行了600多次集成交付,同时进行了多达6个并发开发和发布工作。
我是负责备份的CM / ClearCase主要负责人,他能够执行常规的交付/合并和集成构建。网络和服务器由IT团队支持。我只能说,在这项巨大的开发工作中,CM方面几乎没有任何问题,而且从来都不是阻碍。每当项目管理部门提出要求创建新项目(分支)时,我们的开发人员都将接受基本知识和简单步骤的培训。
太多的开发人员抱怨ClearCase,因为他们缺少适当的CM / IT / ClearCase / Process / Management支持。开发人员应专注于开发而不是SCM或成为工具专家。对于大型软件开发,至少应将预算的5-7%用于CM和工具支持。
“需要一个专门的人”和“它很复杂”等观点。
发现此问题的核心问题是,您必须定义是否要在组织中执行配置管理(不是版本管理)。配置管理就像项目管理:即使没有工具,您仍然可以进行项目管理,没有工具也可以进行配置管理。许多人很难理解这一点,并且许多人认为Configuration Management等同于对软件或某些源进行版本控制的工具……(因此与Subversion或其他VERSION管理系统进行比较)
ClearCase是一种为在Configuration Management环境ERGO中使用而构建的解决方案:有一个配置管理器(就像“有一个项目管理器”一样)。
所以...如果您认为有专人负责工具管理,我认为这是非常错误的事情。在我看来,有一个专门的人负责配置管理,从最终用户的角度来看,他只会在工具出现问题时才会出现,但仅将其视为工作的1%。
因此,您需要做的事情(就像在任何其他软件项目中一样)回到您的需求,然后将需求列表放到组织对配置管理的需求上。是的,就像在其他任何软件项目中一样,您将拥有完全不同意某些要求的其他用户(例如管理)的用户(例如开发人员)。我在这里阅读的一些反应中有关键的恕我直言。
恕我直言,如果您有需求的组织列表和配置管理器....选择非常明确(另请参见www.cmcrossroads.com上的论坛)
ClearCase不仅是最终用户在版本控制(如subversion或git)下输入其源代码的工具。这仅仅是配置管理器真正想要成熟的配置管理工具的原因的1%。
而且...我认为选择CM系统绝不应该等于选择正确的项目管理工具或CRM系统。开发人员是该工具功能某些部分的最终用户。