通常情况下,您使用ct findmerge
查找要从一个分支或视图合并到当前视图中的文件(假设ct
是cleartool
的别名)。
我认为你必须确定你有兴趣,并为每个分支单独做ct findmerge
操作的分支 - 每个分支目标。这很复杂。您还希望能够消除已知完全合并的许多分支机构。您可以注释一个分支以表明它已完全合并。
所以,我不认为这是一个简单的,单一的命令来完成这项工作。
您需要确定哪些分支是您关心的目标。这些将是您的集成分支。据推测,你有这些相当小的名单。
对于每个那些目标的分支,你需要决定哪些工作分公司有关该集成分支。这是棘手的部分;有没有简单的方法来确定一个特定的错误修复或功能分支是否与使用VOB中的信息的整合分支相关;它真的只有用户才知道。
然后,您需要一个脚本,它(轮廓):
for int_branch in $(list_relevant_integration_branches)
do
...create view with tag $tag for $int_branch...
ct setcs -f $(cspec_for_integration_branch $int_branch) $tag
ct setview -exec "find_outstanding_merges_for_integration_branch $int_branch" $tag
done
其中find_outstanding_merges_for_integration_branch
看起来有点像:
vob_list=$(list_relevant_vobs)
for mrg_branch in $(list_relevant_merge_branches $int_branch)
do
echo
echo "Merges from $mrg_branch to $int_branch"
ct findmerge $vob_list -fversion .../$mrg_branch/LATEST -print
done
注意,这个命令假设(一)目前的观点是适当的(b)集成分支名称作为参数传递。
你可以看中,并决定如何处理自动或图形合并,而不是-print
。困难的部分仍然是不成文的命令,如list_relevant_integration_branches
和list_relevant_vobs
。这些可能很简单:
# list_relevant_integration_branches
cat <<EOF
integration_branch_version_3_0
integration_branch_version_3_1
integration_branch_version_4_0
EOF
# list_relevant_vobs
cat <<EOF
/vobs/mainproject
/vobs/altproject
/vobs/universal
EOF
或者他们可能会相当复杂。 (如果你只有一个VOB,那么你的生活要简单得多;我们的系统在cspec中有20多个VOB可见)。
另一个未写脚本是list_relevant_merge_branches
。我不知道是否有简单的写法。如果您在创建开发分支(可能是“目标集成分支”属性类型,枚举类型)时定义并应用适当的属性类型(ct mkattype
,ct mkattr
),则可以使用它来指导您。这给你带来了一个翻新问题。如何在每个现有工作分支上获得正确的属性。您还需要一个单独的属性来识别不再需要合并审查的分支,除非您确定缺少“目标集成分支”属性意味着“不需要再仔细检查”。这减少了改造问题,将目标集成分支添加到仍然需要合并的那些分支;默认情况下,所有现有分支机构将被视为完全合并。
我欣赏的帮助。我不应该把它限制在“一个命令”上。有可能有一个脚本可以做到这一点吗? – Chris