首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cleartool -合并单进程

cleartool -合并单进程
EN

Stack Overflow用户
提问于 2012-11-28 15:03:50
回答 2查看 2.7K关注 0票数 1

我正在尝试将分支Nov12中的单个进程合并到main中。在搜索此参考后,我发现以下内容应将分支的副本合并到主目录中

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-28 15:28:00

您需要位于视图集中才能在/main上创建版本。

相反,您的合并希望在Nov12上创建一个版本

页面"To merge selective versions from a subbranch“详细介绍了您正在使用的合并:

代码语言:javascript
复制
cleartool merge [ -graphical ] -to target-path -insert contributor-version-selector  [contributor-version-selector]

但它还需要先查看的目标版本。

这意味着,即使在合并之前,您也应该在版本树中看到在/main/8版本之后创建的版本。

因此,在正确的目标视图中再次尝试合并,以便在/main上生成新版本。

票数 2
EN

Stack Overflow用户

发布于 2012-11-28 15:28:42

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

代码语言:javascript
复制
mv new_update.sql.merge new_update.sql

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

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

代码语言:javascript
复制
ct findmerge -ftag nov12 new_update.sql

输出可能包括如下代码行:

代码语言:javascript
复制
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)]

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

代码语言:javascript
复制
findmerge.log.2012-11-27T23:12:43-08:00

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

代码语言:javascript
复制
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个文件。功能。我有一些辅助脚本来驱动这些东西,所以我的命令序列实际上是:

代码语言:javascript
复制
fmp -l log 233636 /vobs/project/ /vobs/auxilliary
fmm log
ct ci -c 'Bug 233636: Brief title for bug' $(ct lsco -avo -cvi -s)

fmp (查找、合并和打印)脚本运行第一个findmerge,输出到文件logfmm (查找、合并和合并)脚本执行实际的合并,并自动为要合并的文件提供最后一条签入消息。最后一行使用我选择的注释(ctcleartool的别名)进行签入,覆盖了fmm提供的注释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13599578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档