Merge 在ClearCase中查找所有未合并的文件/元素

Merge 在ClearCase中查找所有未合并的文件/元素,merge,clearcase,Merge,Clearcase,我们在我工作的地方使用ClearCase,我试图找出如何找到任何已修改但未合并的文件。我们在ClearCase的顶层有一个主要分支,这是最终源代码更改合并到的地方,也是我们进行正式发布构建的地方。然后,我们在main下有一个集成分支,在那里解决集成问题。当我们在集成分支中完成所有工作并进行测试时,我们将集成分支合并到main。对于单个功能实现和错误修复,我们在集成分支之外创建一个新分支(通常以操作、功能或错误修复命名),并解决问题。完成后,我们将该更改合并到集成分支 我想知道是否有人知道一个命令

我们在我工作的地方使用ClearCase,我试图找出如何找到任何已修改但未合并的文件。我们在ClearCase的顶层有一个主要分支,这是最终源代码更改合并到的地方,也是我们进行正式发布构建的地方。然后,我们在main下有一个集成分支,在那里解决集成问题。当我们在集成分支中完成所有工作并进行测试时,我们将集成分支合并到main。对于单个功能实现和错误修复,我们在集成分支之外创建一个新分支(通常以操作、功能或错误修复命名),并解决问题。完成后,我们将该更改合并到集成分支


我想知道是否有人知道一个命令或一种方法,可以查看哪些文件在功能/错误修复分支中被修改,但没有合并到集成分支。我一直在四处寻找,但似乎找不到办法。我希望能够运行该命令,并让它告诉我所有子分支上已修改但未合并的所有文件。谢谢。

通常,您可以使用
ct findmerge
查找要从一个分支或视图合并到当前视图的文件(假设
ct
cleartool
的别名)

我认为您必须确定您感兴趣的所有分支,并为每个分支(针对每个目标分支)执行单独的
ct findmerge
操作。这很复杂。您还希望能够消除许多已知已完全合并的分支。可以对分支进行注释,以指示它已完全合并

所以,我不认为有一个简单的,单一的命令来完成这项工作


您需要确定哪些分支是您关注的目标。这些将是您的集成分支。大概,你有一个相当小的清单

对于每个目标分支,您需要确定哪些工作分支与该集成分支相关。这是棘手的部分;使用VOB中的信息,无法轻松确定特定的bug修复或功能分支是否与该集成分支相关;它实际上只有用户知道

然后,您需要一个脚本(在大纲中):

其中,
find\u outstanding\u merges\u for\u integration\u 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
请注意,此命令假定(a)当前视图适用于目标,并且(b)集成分支名称作为参数传递

您可以想象并决定如何处理自动或图形合并,而不是
-print
。困难的部分仍然是未编写的命令,例如
list\u-relevant\u-integration\u分支
list\u-relevant\u-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
列出相关的集成分支

cat如果您知道源分支和目标分支(在中详细介绍的主题,我已经向上投票),那么不要忘记合并:

merge (from-location , to-location)
在所有情况下,
TRUE
如果对象所属的元素有一个合并超链接(默认名称:
合并
),将
从位置
连接到位置

您可以使用分支路径名或版本选择器指定一个或两个位置。
如果合并超链接涉及分支上的任何版本,则指定分支将生成
TRUE

分支路径名必须完整(例如,
/main/rel2\u bugfix
,而不是
rel2\u bugfix

说明了正在运行的查询:

如何找到特定分支上签入而未合并的所有元素

“合并超链接”是您在版本树中看到的红色箭头:
(见第条)


我感谢您的帮助。我不应该把它限制在“一个命令”。有没有可能有一个脚本可以做到这一点?
merge (from-location , to-location)
cleartool find \\view\administration\ProjectVOB \
   -branch "brtype(HNH-372452) && \
   !merge(...\HNH-372452\LATEST,...\main-372452\LATEST)" -print

\\view\administration\ProjectVOB\Com-API\Dll\COMFrontendDll\Mmi.cpp@@\main\HNH-372452
\\view\administration\ProjectVOB\geometry\geochain\geocutterloc.cpp@@\main\HNH-372452