【问题标题】:Clearcase UCM: rebase fails - error (apparently) is a lie - what's the root cause?Clearcase UCM:rebase 失败 - 错误(显然)是谎言 - 根本原因是什么?
【发布时间】:2013-11-22 14:54:45
【问题描述】:

我有一个相当标准的设置,其中包含一个开发流 (devStream),它向集成流 (intStream) 交付和变基。

我的开发视图 (devView) 中有一个文件,我可以正常签出、修改和签入。

但是,当我尝试交付(以及后来的 rebase)时,我遇到了一个令我困惑的错误……(尤其是在过去 6 个月里我一直在交付和 rebase 时)值得注意的是,我们最近升级了从 Rhapsody 8.0.2 到 8.0.4(并相应地升级了 clearcase 的 map 文件指向的 diffmerge 工具以用于 rhapsody 文件),但是当出现错误时,我看不出这是怎么回事。

由于图形模式很难从我捕获的一些命令行运行的结果中获得足够的调试信息。

这是

的(匿名)结果

开始一个变基

cleartool> rebase -recommended
*SNIP*
Creating integration activity...
Setting integration activity...
Merging files...
Checked out "C:\CCVs\myDevView\shortenedPath\theFile.sbs" from version "\main\intStream\devStream\9".
  Attached activity:
    activity:NSSLB00001350@\projects  "rebase devStream on 20131120.195128."
Needs Merge "C:\CCVs\myDevView\shortenedPath\theFile.sbs" [to \main\intStream\devStream\CHECKEDOUT from \main\intStream\9 base \main\intStream\8]
cleartool: Error: Unable to access "C:\CCVs\myDevView\shortenedPath\theFile.sbs": No such file or directory.
cleartool: Error: An error occurred while merging file elements in the target view.
cleartool: Error: Unable to perform merge.
cleartool: Error: Unable to perform integration.
cleartool: Error: Unable to rebase stream "devStream".

正在尝试恢复变基

cleartool> rebase -resume
Rebase in progress on stream "devStream".
Started by "XXXXX" at 11/20/2013 7:51:28 PM.
Merging files...
cleartool: Error: Unable to access "C:\CCVs\myDevView\shortenedPath\theFile.sbs": No such file or directory.
cleartool: Error: Some files are already checked out to a non-integration activity in the target view.
cleartool: Error: Unable to perform merge.
cleartool: Error: Unable to perform integration.
cleartool: Error: Some files are already checked out to a non-integration activity in the target view.
cleartool: Error: Unable to resume rebase.

列出与由此创建的集成变基活动相关的信息

cleartool> lsactivity -long NSSLB00001350
activity "NSSLB00001350"
 2013-11-20T19:52:00-06:00 by XXXXXX
  "Integration activity created by rebase on 11/20/2013 7:51:28 PM.
   "
  owner: XXXXX
  group: XXXXX
  stream: devStream@\projects
  current view: myDevView
  title: rebase devStream on 20131120.195128.
  change set versions:
    C:\CCVs\myDevView\shortenedPath\theFile.sbs@@\main\intStream\devStream\CHECKEDOUT.94426
  clearquest record id: NSSLB00001350
  clearquest record State: Active
cleartool>

在目录结构的这一部分中列出任何人、任何流、任何地方的结帐

cleartool> lsco -r
--11-20T19:51  XXXXX    checkout version ".\shortenedPath\theFile.sbs" from \main\intStream\devStream\9 (reserved)
  Attached activity:
    activity:NSSLB00001350@\projects  "rebase devStream on 20131120.195128."

在这一点上,我对如何进行感到困惑。谷歌搜索没有提出任何似乎相关的内容(或者我的谷歌技能可能很弱)。

还值得指出的是,我的清除案例技能完全是根据需要自学的......所以我确信我的知识存在漏洞。意思是即使某些事情看起来很明显,也请指出;我可能不知道。


请求的信息

没有尝试变基

C:\CCVs\myDevView\shortenedPath>cleartool ls    
theFile.sbs@@\main\intStream\devStream\9              Rule: ...\devStream\LATEST
theFile.sbs.merge
theFile.sbs.merge.1
theFile.sbs.merge.2
theFile.sbs.merge.3
theFile.sbs.merge.4
*snip (other files)*

在变基失败的中间

theFile.sbs@@\main\intStream\devStream\CHECKEDOUT from \main\intStream\devStream\9 [not loaded, checkedout but removed]
*snip*
theFile.sbs.merge.5

所以... rebase 对文件做了一些奇怪的事情;但是为什么它在执行 rebase/deliver 时消失,而不是在进行正常结帐时消失?

【问题讨论】:

    标签: clearcase-ucm


    【解决方案1】:

    要对此进行调试,您必须在 shell 中转到命令行,然后转到丢失文件的父文件夹:

    cd /path/to/target/view/path/to/parent/folder
    
    # in your case
    
    cd C:\CCVs\myDevView\shortenedPath\
    cleartool ls
    cleartool lsvtree -graph .
    

    cleartool ls 返回的文件状态可以为您提供有关正在发生的事情的线索。
    例如“签出但已删除”意味着合并工具试图访问/打开该文件,但不知何故它被删除了:当所述文件被进程获取时会发生这种情况,并且无法完全签出。

    lsvtree 还可以为您提供有关父文件夹的线索(查看它是否已合并)。

    另一种方法是取消该变基,并在动态视图而不是快照视图中再次尝试,以避免快照视图未正确更新的任何副作用。


    OP Khanmots 结束in the comments:

    我取消了 rebase(以获取文件的副本)并重新启动它。
    当它被炸毁时,我将文件复制回来然后点击重新启动rebase。又删了。
    然后我在打开 diffmerge 工具的提示时替换了文件,这允许 diffmerge 实际启动......但是当我告诉 diffmerge 保存(解决差异后)时,它会删除文件并创建另一个 .merge.# 文件。
    此时看起来这是一个 diffmerge 问题,而不是 clearcase 问题。

    【讨论】:

    • 冯,感谢您的帮助。我提供了运行 cleartool ls 的结果,正如您所猜测的那样,我看到了已签出但已删除的状态。今天晚些时候我将在谷歌上搜索可能的原因,但如果您有任何进一步的见解,我将不胜感激。谢谢!
    • @Khanmots 尝试简单地恢复该文件的内容:然后它将显示为“已签出”。恢复变基并查看问题是否重复出现(文件消失,并保持“已签出但已删除”)
    • VonC,抱歉延迟回复,我整天都在开会。也就是说,我在观察 rebase 的进展时尝试了另一个 rebase 经常运行 cleartool ls 。似乎可以很好地签出文件,然后当 diffmerge 工具尝试启动时文件消失(这就是下一次合并时出现的时间。# 出现)。下一次休息时,我将尝试从临时目录中复制文件,然后看看会发生什么。
    • @Khanmots 是的:当您复制它时,该文件已被签出。然后resume rebase(不要重新开始,恢复它),看看会发生什么。确保没有其他进程访问该文件。
    • 好的,这很奇怪。我撤消了变基(以获取文件的副本)并再次启动它。当它被炸毁时,我将文件复制回来然后点击重新启动rebase。又删了。然后我在打开 diffmerge 工具提示的同时替换了文件,这允许 diffmerge 实际启动......但是当我告诉 diffmerge 保存(解决差异后)时,它会删除文件并创建另一个 .merge.# 文件.在这一点上,它看起来像是一个 diffmerge 问题,而不是一个 clearcase 问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多