【问题标题】:cleartool findmerge and labelcleartool findmerge 和标签
【发布时间】:2017-01-11 20:31:51
【问题描述】:

我正在尝试为 Base ClearCase 编写一个脚本,该脚本将查找给定分支和标签上的所有文件,并将这些文件简单地合并到另一个分支,然后用不同的标签标记新合并的文件。

例如,给定分支上的文件\main\Proj\Proj_INT1 并标记为Ver4,我想将文件合并到\main\Proj 分支并用Ver4X 标记它们(如果它们需要合并)。

我知道我可以使用-fver "\main\Proj\Proj_INT1\Ver4" 来查找我想要合并的文件的版本,但我不确定如何将合并与应用标签结合起来。

从文档来看,它看起来不可能做一个cleartool findmerge ... -merge -exec "cleartool mklabel ...",所以我目前正在尝试一个cleartool findmerge ... -log <out_file.log> -print,然后解析生成的日志以获取所有文件版本。但是,鉴于findmerge 命令在目录处停止,我需要多次重复此操作,直到合并所有目录和文件(尝试编写脚本和解析 cleartool 输出有点头疼)。

是否有一种惯用或简单的方法来执行合并然后标记文件?也许我可以执行合并并让 cleartool 生成一个日志,其中显示合并文件的版本(所以我然后可以标注)吗?

此外,如果我执行cleartool findmerge ... -merge 操作,它如何处理非平凡的合并?我不希望任何非平凡的合并,但我想跳过错误或如果遇到非平凡的合并,则完全停止合并。

【问题讨论】:

    标签: merge clearcase cleartool


    【解决方案1】:

    正如我在“ClearCase: When using clearfsimport to perform a reset merge, how can I keep it from creating evil twins?”中提到的,您需要:

    • findmerge 首先是文件夹 (-type d),然后是文件 (-type f)
    • 使用findmerge -abort 来解决任何会导致findmerge 失败的手动合并。

    我没有使用findmerge ... -merge,而是使用-exec "cleartool merge $CLEARCASE_PN...",使用cleartool merge语法。

    【讨论】:

    • 真正的问题是还要标记文件。你是建议我做一个-exec "cleartool merge ... && cleartool mklabel ...",还是我能以某种方式从findmerge命令中获取新版本,然后在循环中解析并使用cleartool mklabel
    • @Darthfett 第一种方法应该可行,因为合并后的版本将是目标视图中的最新版本和当前版本。
    • 我现在正在查看文档,看来我需要在合并之前检查文件?你同意它现在看起来更像-exec "cleartool checkout ... && cleartool merge ... && cleartool checkin ... && cleartool mklabel"吗?
    • 是的,我同意,结帐然后合并,首先是文件夹,然后是文件
    • 嗯,看起来这不可能,因为我无法在没有版本信息的情况下指定文件路径以执行合并。我想我会使用执行合并的备份解决方案,并希望在findmerge 期间打印出版本信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多