每个开发人员应该知道的基本清晰概念是什么?

时间:2009-03-13 23:49:44

标签: clearcase

每个开发人员应该知道的Clearcase版本控制系统的核心概念是什么?

12 个答案:

答案 0 :(得分:144)

答案 1 :(得分:19)

ClearCase是一种可以使用的野兽。慢,马车,昂贵。我为应对CC所做的一些事情是:

  1. 办理登机手续时,请务必提出好评。
  2. 使用通用配置规范,不要经常更改。
  3. 切勿尝试通过VPN或慢速网络连接使用CC。
  4. 启动时关闭CC医生的装载。
  5. 不要将文件移动到不同的目录。
  6. 每个文件至少安排2分钟以便签入。
  7. 快照视图很慢,但动态视图速度较慢。
  8. 养成一种早期检查的开发习惯,因为保留的文件和合并很痛苦。
  9. 默认情况下让所有开发人员检出未保留的文件。

答案 2 :(得分:16)

答案 3 :(得分:5)

Eric's Source Control HOWTO是一个很棒的指南,与工具无关。

答案 4 :(得分:4)

我在6年的大部分时间里使用clearcase,并且通常认为它是可以容忍的。它确实有一定的学习曲线但是一旦你习惯了怪癖,你就可以顺利地使用它。一个非常称职的CC管理员知道他正在做什么对于除了琐碎的设置之外的任何事情都是必不可少的。除非你有一个,否则人们会遇到问题,很快就会有人谈论“ClearCase”问题。然后,管理层将不得不通过切换到其他方面进行干预,从而导致每个人都浪费时间。 CC不是一个糟糕的产品,它有时候很难被理解。

以下是我发现的一些重要概念,其中一些概念并不仅仅是CC -

  • 结账不同于常规的CVS概念退房。当您签出时,您将锁定文件,直到您签入。
  • 移动文件没有问题。事实上,这完美无瑕。
  • 版本树对于理解文件发生的情况至关重要。对于活动文件,它们可能会变得非常混乱但是当你习惯于看它们时,它会变成一个非常有用的工具,而且在其他源控制工具(例如SVN)中非常缺乏(在某种程度上)。
  • 在任何情况下都不要使用动态视图。它不值得。
  • 在创建新的分支,流或项目之前,请与您的管理员联系,以确保您创建的内容真正为您提供最佳服务。在开始新的代码库时,请确保通过提前计划从一开始就获得流和项目布局。如果可能的话,以后改变它是一个真正的头痛。
  • 微调用户的权限并设置常见事件的触发器,以防止常见错误或执行策略。服务器是可配置的,大多数遇到的问题都可能是一个合理的解决方案。
  • 教育开发人员从基本概念到高级操作的任何事情。能够找到使用cleartool的问题的高级用户会降低管理员的负担。
  • 不要留下悬垂的溪流和景色。当开发人员离开项目时,有人要删除他在机器上的所有视图并删除他所有的私有流。不保持您的服务器清洁将导致...它是脏的,随着时间的推移,缓慢。当您在所有流和视图上执行“查找所有签出”时,您不应该看到由不再存在的人签出的文件。
  • 为子分支设置“总是在交付之前进行rebase”策略,以避免人们在交付与最近更改冲突的代码时“破坏集成流”。
  • Continuous integration - 当每个开发人员或团队在自己的分支上工作时,不要让集成流停滞不前。每X次授权一次,如果不提供稳定的变化,每个人都必须至少使用最新的整合基线。这确实很难做到,特别是对于大型项目,但另一种选择是“整合地狱”,在月底没有人做任何事情3天,而一些可怜的草皮试图让所有变化融合在一起

答案 5 :(得分:4)

答案 6 :(得分:2)

在我看来,分支和合并是任何源代码控制系统中最重要的概念(当然,除了版本本身之外)。

一旦你理解了它是如何完成的(并且Clearcase做得非常好,我们甚至做了一个小的变化作为分支并重新合并,而不是我曾经用RCS或CVS做过的事情),你会找到你的生活变得更容易。

答案 7 :(得分:2)

某种方式偏离主题,但是 - 我不知道几乎没有开发人员对ClearCase感到满意。我被告知它应该具有复杂的功能,但作为一个svn和git用户,我不可能想到我在git或subversion中遗漏的东西。 所以这是人们应该了解的关于ClearCase的东西 - 大多数开发人员都非常乐意使用像subversion或git那样简单的东西(是的,甚至git更容易掌握),甚至在我知道如何完成ClearCase中最简单的任务之后,我有了不断感觉ClearCase对我不利,而不是对我。

答案 8 :(得分:1)

我使用Clearcase和SVN成功完成了大量的大中型项目。两者都是很好的工具,但使用它们的团队需要记录流程。创建一个描述如何使用版本控制系统的流程。

1)查找或创建版本控制系统的最佳实践文档。这是一个for subversion,使其适应您的Clearcase流程。所有开发者必须遵守相同的游戏计划。

基本上决定你是否要“永远分支”或“永不分支”。

Never Branch Scheme:

  • Never分支方案是SourceSafe在结帐时锁定文件并在签入期间可用的方式。这个方案适用于小型(1或2个开发人员)团队项目。

始终分行计划:

  • 始终分支方案意味着开发人员为每个错误修正或功能添加创建分支。大型项目需要此方案,具有领导(buildmeister)的项目负责管理在Clearcase中的/ main / LATEST或SVN中的/ trunk中允许的更改。
  • 始终分支方案意味着您可以经常检查而不必担心破坏构建。只有在您的错误修正或功能完成并将其合并到/ main / LATEST之后,才能打破构建。

'需要时分支'是一种妥协,可能对许多项目都有效。

2)使用Clearcase(和Subversion)你必须学会​​合并 - 合并是你的朋友。学习使用Clearcase的合并功能或使用Beyond Compare或emacs-diff等工具。如果您的项目模块化很好(许多小的解耦文件),那么在合并期间您将受益更少(或没有)冲突。

3)享受。

答案 9 :(得分:1)

如果您使用的是ClearCase,请确保使用随附的UCM和复合材料组件。

它使您的所有分支/合并毫不费力。 我说的是主要的重组组织,运行6个月,涉及成千上万的更改,包括目录重命名,文件重命名等,自动解决99.9%的增量。

另外,我们只使用SnapShot视图,而不是动态视图。我们的快照视图加载速度比从网络驱动器拖放(Windows)相同的源树更快。

我对UCM的唯一抱怨是历史不能跨越组件。如果将组件拆分为多个新组件,则每个新组件都从/ main / 0开始。

答案 10 :(得分:0)

如何在项目中实施版本控制工具取决于您的项目规模和范围以及团队早期的经验。 ClearCase是大型项目开发人员和项目规模的绝佳工具。 在使用版本控制工具时,管理分支是非常重要的前景之一。 没有分支和合并,它是在项目生命周期中的蛋糕步行。 但是你不能因为它可以让你锁定和奇妙的并行开发而远离合并。

答案 11 :(得分:0)

有一个非常方便的命令cleardescribe多次有用。可用于获取标签和分支的详细信息。语法是:

cleardescribe lbtype:<LABELNAME>@\<VOB-NAME>
cleardescribe brtype:<BRANCHNAME>@\<VOB-NAME>

具体来说,这可以让您知道标签是应用于哪个分支,哪个分支是父分支到有问题的分支。