2010-02-28 37 views
0

我有为子分支创建的视图。对于给定的子分支名称,是否有可能找出父分支和从中创建子分支的基础标签?如何在Clearcase中查找分支的父标签

+0

ClearCase中没有“父标签”或“子分支”的概念。如果你想让某人花时间在一个很好的答案上,你至少必须提供一个确切的问题陈述。我不会另外列举每种可能的解释和答案。 – Garen 2012-05-16 23:43:34

回答

1

您的子分支将基于哪个分支,标签或版本由config_spec决定。尝试运行cleartool catcs -tag <your_view_name> | grep -2 <your_child_branch_name>,这应该会在前后给出几行来给出上下文。 config_spec的外观如何变化很大[1],所以我不能说如果只是羡慕就足够了。

如果你想学习和理解你可能想检查整个config_spec。 在您的视图中,您可以运行cleartool ls [file(s)]Rule: ...部分将回顾所应用的config_spec中的内容。

[1] 当我12年前开始使用clearcase时,我们只是手工编辑了几行代码,今天它是由一个工具生成的,有数百(或数千?)行。

+0

12年前?当时是什么? ClearCase3,ClearCase4?仍然是Atria产品。无论如何+1指向配置规范。 – VonC 2010-02-28 21:21:09

+0

@VonC:我们从1994年开始使用CC,我不确定版本号,但不是很大。 – 2010-02-28 21:32:23

+0

@Jonathan:1994年... CASEVision™/ ClearCase的(http://docs.sgi.com/library/tpl/cgi-bin/browse.cgi?coll=0530&db=bks&cmd=toc&pth=/SGI_Admin/ClrC_AG):可能ClearCase的2.0(http://www.encyclopedia.com/doc/1G1-17625730.html) – VonC 2010-02-28 21:48:18

2

由于这些概念不一定适用,所以对于您的问题没有简单的答案。这意味着答案也必须深入研究背景。

配置规范是了解事物当前如何工作的关键(catcs)。查看实际的文件版本名称和版本历史记录(描述,历史记录)是了解在创建分支或版本时事情如何工作的其他关键。

分支独立于其上的文件而存在。对于不同的文件,相同的分支名称可能出现在分支结构的不同位置。分支不一定是从文件的标签版本创建的(尽管它有时是)。同样,标签的存在与标签文件无关。

例如,请考虑我应该在此刻被审查文件(伪装名称,但代表):

  • xyzscan.c @@ /主/ TEMP.newfeat.it1/TEMP。 newfeat.it2/TEMP.newfeat.it3/3

通过钻研历史,我可以看到TEMP.newfeat.it1分支从版本xyzscan.c @@ /主/ 89创建的;这不是一个标签版本,因为之前的修订包使用了xyzscan.c @@/main/88(标签为product-6.54.03等;该文件在多个版本中未更改,更不用说修复包)。自上一个标签版本以来,/ 89版本是一个(次要)错误修复。

这个特殊的新功能有3次迭代。目前的配置规格看起来有点像:

element * CHECKEDOUT 

element * .../TEMP.newfeat.it3/LATEST 
mkbranch TEMP.newfeat.it3 -override 

element * .../TEMP.newfeat.it2/LATEST 
mkbranch TEMP.newfeat.it2 -override # Redundant 

element * .../TEMP.newfeat.it1/LATEST 
mkbranch TEMP.newfeat.it1 -override # Redundant 

element /vobs/product/... /main/LATEST 
include /atria_release/cspecs/otherprod/2.34/otherprod-2.34.05 
element * /main/LATEST 

第二和第三个“mkbranch”线现在是多余的,但是是相关的,当他们的分支是最新的。

上有TEMP没有标签*根据我们的计划分支(和普通的工程师不允许创建不启动分支“TEMP”,这是由触发脚本执行)。

在每次迭代中都修改了xyzscan.c文件。使用 '描述',我可以看到:

  • xyzscan.c @@ /主/ TEMP.newfeat.it1/TEMP.newfeat.it2/TEMP.newfeat。IT3/0从 xyzscan.c @@ /主/ TEMP.newfeat.it1/TEMP.newfeat.it2/2

  • xyzscan.c @@ /主/ TEMP.newfeat.it1/TEMP.newfeat支.it2/0从xyzscan.c @@/main/TEMP.newfeat.it1/7分支出来。

但是,如果我看另一个文件:

  • xyzread.c @@ /主// TEMP.newfeat.it3/1

我可以看到,这是不修改直到迭代3 - 此文件没有分支TEMP.newfeat.it1或TEMP.newfeat.it2。而且,这不是问题。


问题问:

我有一个子分支创建的视图。对于给定的子分支名称,是否有可能找出父分支和子分支创建的基标签。

给定一个文件在视图中,您可以运行'cleartool describe',可能使用'-s'(短)选项来获取其版本号。在我的例子,这可能是:

  • xyzscan.c @@ /主/ TEMP.newfeat.it1/TEMP.newfeat.it2/TEMP.newfeat.it3/3

要找出您需要查看分支上的'/ 0'版本,它的内容与其分支的分支TEMP.newfeat.it2上的版本完全相同。然后,您需要查看“/ 0”版本的完整描述,以查看前一版本是什么('-s'现在没有帮助)。这就是我如何发现,以前的版本是:

  • xyzscan.c @@ /主/ TEMP.newfeat.it1/TEMP.newfeat.it2/2

重复倒退。您可以看到适用于TEMP.newfeat.it3从'describe'的(完整)输出中分支的版本的标签。但是,自分支创建以来,这些标签可能已应用。

通常(虽然不是这个例子中),在TEMP.newfeat.it3分支版本之后,分支上可能会有更新的版本,例如TEMP.newfeat.it2。这总是会导致问题:TEMP.newfeat.it2分支上的额外更改是否需要合并到TEMP.newfeat.it3分支 - 幸运的是,ClearCase在合并和合并跟踪方面相当不错。

+0

+1。一如既往的完整和详细。版本0在这里是关键。它是新分支的“声明”版本,它与父分支的版本相同。 – VonC 2010-02-28 21:22:44

2

根据配置规范的指定,可以从该视图中的任何版本创建分支。
起点可以是标签,也可以是其他标准的版本参考(日期,来自另一个分支的最新信息等)

总之:你不能; ClearCase是基于文件的,而不是基于存储库的。
这意味着您可以决定从不同条件开始分支,针对给定视图选择的每个文件。

现在,如果您在视图中已经修改了一个文件(即,它具有新的分支),你可以:

cleartool descr -l myFile 

这应该给你的文件的扩展路径:

[email protected]@/main/parentBranch/myBranch 

当前新的前一个分支的名字是你在找什么对于。
您可以确定对于给定的文件。

相关问题