首页 > 解决方案 > 列出 Clearcase 中特定文件/目录的所有分支

问题描述

该命令cleartool lsvtree -s .已关闭,但它列出的不仅仅是分支:

X:\main_dev\common>cleartool lsvtree -s .
.@@\main
.@@\main\2
.@@\main\3
.@@\main\4
.@@\main\10
.@@\main\2.1.3
.@@\main\2.1.3\1
.@@\main\13
.@@\main\3.0.2
.@@\main\3.0.2\0
.@@\main\15
.@@\main\4.1.0
.@@\main\4.1.0\0
.@@\main\17
.@@\main\4.2.0
.@@\main\4.2.0\0
.@@\main\4.5.0
.@@\main\4.5.0\0
.@@\main\20
.@@\main\lib-4.6.0
.@@\main\lib-4.6.0\0
.@@\main\27
.@@\main\4.6.0
.@@\main\4.6.0\0
.@@\main\4.6.0\4.6.01
.@@\main\4.6.0\4.6.01\0

我希望它只产生分支,例如:

X:\main_dev\common>cleartool lsvtree -s .
.@@\main
.@@\main\2.1.3
.@@\main\3.0.2
.@@\main\4.1.0
.@@\main\4.2.0
.@@\main\4.5.0
.@@\main\lib-4.6.0
.@@\main\4.6.0\4.6.01

我猜测解决方案将涉及cleartool find命令。有任何想法吗?

标签: clearcasecleartool

解决方案


cleartool find实际上,结合使用and的-exec指令。cleartool describe-fmt_ccase

或者只是具有相同 fmt_ccase 的 lshistory

cleartool  lshistory -fmt "\tElement: %-13.13En Version: %Vn\n" util.c
Element: util.c Version: /main/rel2_bugfix/1
Element: util.c Version: /main/rel2_bugfix/0
Element: util.c Version: /main/rel2_bugfix 

/x但这仍然包括版本:您需要对结果进行后处理,以便在存在最终版本时摆脱它

就像是:

cleartool  lshistory -fmt "%Vn\n" util.c|sed "s,/[0-9]\+,,g"

OP Derrick在评论中提出了更简单的选项

cleartool lsvtree aFile | grep -v '\[0-9]\+$' 

我仍在寻找一种确定性(无命名假设)的方法来查找特定文件/目录的所有分支

lsvtree中包含“0”元素的任何条目都是分支。
O新分支版本的 placehoster
请参阅“ Clearcase 路径是否是标准路径 - ' @@' 和之后的字符串

示例(在动态视图中):

ls .@@\main\4.6.0
0

ls .@@\main\4.6.0\0
(nothing)

因此\main\4.6.0是一个分支。


推荐阅读