2

我使用 ClearCase 已经 20 年了,这是一个疯狂的问题。8 年前我在另一个编译器中遇到过它,但这次我没有解决方法。

FileA 包括 HeaderX 和 HeaderY 但预编译器从不读取与 HeaderX 无关的 HeaderY (将 HeaderX 排除在等式之外或对 HeaderX 进行相对任意的更改并读取 HeaderY)

随机地,我们看到旧的 powerpc-wrs-vxworks gcc-2.96 编译器在预编译期间不包含文件。这仅发生在特定的vob中,并且仅发生在动态视图中并且随机发生。我们认为这是特定于这个特定的 VOB,并且认为 VOB 有问题。我们遇到过 Win7 ClearCase 版本 7.1.2.1 的问题,但也遇到过 WinXP 的问题。多年来,我们注意到这个 VOB 与另一个编译器有类似的问题。当我们跟踪编译器时,我们看到它打开并且 fstat 是包含文件,然后在没有读取的情况下关闭。通常,编译器会在打开后执行读取。跟踪显示 fstat 返回有效大小。下面是对问题的最简单提炼,但不要被引诱认为它与文件内容有关以解释行为 - 您可以对文件进行任意更改以引发正确的行为。具体来说,您可以使用移动到同一视图中或视图外的不同位置的相同文件,编译器将正常运行或使用具有相同文件的不同视图并且它会工作。我们相信,与 MVFS 的一些交互,特定于这个 VOB,以及编译器是问题所在。

有没有人看到出现故障的 VOB 可能进入的状态可能会在视图中随机显示这种不当行为?

富.c:

#include "HeaderX.h"          /* fix 1 remove this line
                                 fix 2 rename this include file
                                 fix 3 move this include file to a new dir */
#include "HeaderY.h"          /* fix 4 move this line up
                                 fix 5 rename this include file
                                 fix 6 move this include file to a new dir */

HeaderX.h:

/* a=b;                          fix  7 uncomment this line */
#ifndef X                     /* fix  8 change this to an #ifdef instead of #ifndif */
#define X                     /* fix  9 remove this line    
                                 fix 10 change just this X to Y
                                 fix 11 move define after endif */
#endif

标头Y.h:

#error hurrah! I was included /* GOAL -- to have this file included 
                                         If it is included the precompiler
                                         will print this message.
                              */

PS不要告诉我这是一个编译器错误。

相信这是 ClearCase 问题的理由:

  • 只发生在动态视图中
  • 发生在多台机器、多用户、多视图、不同操作系统上。但这有点随机。

怀疑我的理由的理由:

  • 修复 7、8、9、10、11
  • 在失败的情况下,使用不同版本的编译器不会导致错误。
  • 但我认为质疑编译器是一个红鲱鱼,具有相同文件集的相同编译器将在 ClearCase 之外或在同一视图的不同目录中正常工作。VOB 大约有 15 年的历史,我认为它是 VOB 特有的。但要更换它是一项巨大的努力。
4

1 回答 1

0

在不替换 Vob 的情况下,是否可以在全新的 Vob 中导出代表特定项目来源的 Vob 子集?

一个简单clearfsimport的将创建一个新的历史,而原来的 Vob 仍将用于:

  • 在新 Vob 中导出的文件的历史咨询
  • 对于未在新 Vob 中导出的所有其他文件,其他一切都照常进行。

我见过一些 Vob 损坏的案例,该选项是最简单的解决方法。

于 2013-09-30T16:42:03.023 回答