当我查看cleartool diffbl
手册页时,我没有看到任何格式化选项。
这意味着您需要解析该命令的结果,将每个活动提供给 a cleartool describe -fmt
,使用fmt_ccase 选项之一来显示您想要的内容。
该线程让您了解要遵循的过程,但它是在 bash (unix) 中,如果您需要它可以适应 Windows:
for act in $(ct diffbl -act bl1@/vobs/apvob bl2@/vobs/apvob | grep ">>" | grep -v "deliver." | cut -f2 -d " "); do echo "Activity: $act"; cleartool desc -fmt "%d\n" activity:$act; echo; done
在多行中以提高可读性:
for act in $(ct diffbl -act bl1@/vobs/apvob bl2@/vobs/apvob
| grep ">>"
| grep -v "deliver."
| cut -f2 -d " ");
do
echo "Activity: $act"; cleartool desc -fmt "%d\n" activity:$act; echo;
done
请注意,通过排除“ deliver.
”活动,我们只关注贡献活动,如“如何查找与 ClearCase UCM 活动关联的文件? ”中所述。
OP Lax报告成功地提取了活动的名称,其中包括:
desc -fmt "%Nd\n" "activity:myActivityId"
(@\pvob
已经是diffbl
命令结果的一部分。Lax 只是activityid
从diffbl
结果中解析并将其放入desc
命令)
他补充说:
我在 C# 的上下文中需要这个,所以解析就像解析任何其他字符串一样:我使用正则表达式将输出分隔到我感兴趣的活动中。前任:
Regex.Matches(diffBlOutput, "myInterestedPattern");
对于正则表达式结果中的每场比赛,我得到了活动
RegexMatch.Groups["activity"].ToString()
activityid
实际上是这个字符串的一个子字符串,因为结果总是“ activtyid activityName
”所以,substring(0,result.indexOf(' '));
让我得到活动 ID。