1

我正在尝试将单个 proc 从分支合并Nov12main. 在此参考资料中搜索后,我发现以下内容应将分支中的副本合并到主目录中

Merge version 1 on the branch into the "latest" version in the "main" branch:
ct merge -to new_update.sql -insert -version /main/Nov12/1

运行此之后,我得到的输出为

Trivial merge: "new_update.sql" is same as base "/home/mtk/ct/new_update.sql@@/main/Nov12/0".
Copying "/home/mtk/ct/new_update.sql @@/main/Nov12/1" to output file.
Output of merge is in "new_update.sql.merge".

包含本地磁盘上的new_update.sql.merge完整过程,它不在 clearcase 版本控制中。我做了一个ct lsh来验证这一点。

我希望它应该在 main 上创建一个新版本并将更新的副本放入其中,即 /main/9 尚不存在。最新/main版本是 8。

那么,如何合并单个 proc。我们是否需要从主目录签出副本,然后运行上述命令。请让我知道,我不清楚这一点。我需要一个命令行解决方案,因为图形替代方案不可用。

4

2 回答 2

2

您需要在视图集中创建版本/main
相反,您的合并想要创建一个版本Nov12

从子分支合并选择性版本”页面详细说明了您正在使用的合并:

cleartool merge [ -graphical ] -to target-path -insert contributor-version-selector  [contributor-version-selector]

但它也需要先检查目标版本
这意味着,即使在合并之前,您也应该在版本树中看到在您的版本之后创建的版本/main/8

因此,在正确的目标视图中再次尝试合并,这是为了在/main.

于 2012-11-28T07:28:00.470 回答
2

我认为问题在于你没有指定输出的去向,所以它被放在了文件new_update.sql.merge中,假设当前视图有一个 cspec 设置为你的目标分支,/main. (如果您的视图没有引用/main分支,则您合并到了错误的视图中。)您现在可以执行以下操作:

mv new_update.sql.merge new_update.sql

然后进行签入,假设您或 ClearCase 进行了必要的签出。


这不是我通常做合并的方式——但这并不是说它是无效的。我使用的机制是ct findmerge然后从日志文件中运行命令。我有两个视图,一个带有用于 Nov12 分支的 cspec(视图标记可能是nov12),另一个(当前视图)带有用于主分支的 cspec。

ct findmerge -ftag nov12 new_update.sql

输出可能包括如下行:

Needs Merge "./samizdat.c" [(automatic) to /main/XYZ.1.70/0 from /main/XYZ.1.70
    /TEMP.bug233636.jleffler/1 (base also /main/XYZ.1.70/0)]

这将生成一个日志文件,其名称如下:

findmerge.log.2012-11-27T23:12:43-08:00

该文件的内容是如下命令:

cleartool findmerge ./samizdat.c -fver /main/XYZ.1.70/TEMP.bug233636.jleffler/1 -log /dev/null -merge -cqe

表示“-merge非图形合并”(-gmerge用于图形);意思是-cqe“查询每次结帐的评论”(我总是用 代替-c "Bug 233636: Brief title for bug")。

我怀疑这是否是最快的经商方式,但它确实对我有用。我伪装了文件和分支名称,但假设我的审查获得批准,那(或多或少)我将如何合并和签入大约 20 个文件以实现迷你(微型?)功能。我有封面脚本来驱动很多这样的东西,所以我的命令序列实际上是:

fmp -l log 233636 /vobs/project/ /vobs/auxilliary
fmm log
ct ci -c 'Bug 233636: Brief title for bug' $(ct lsco -avo -cvi -s)

( fmpfind merge and print) 脚本首先运行findmerge,输出到文件log。( fmmfind merge and merge) 脚本执行实际的合并,并自动为要合并的文件提供最后签入消息。最后一行使用我选择的评论(ct是 的别名cleartool)进行签入,覆盖由 提供的评论fmm

于 2012-11-28T07:28:41.753 回答