我使用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可能发生故障的状态可能会在视图中随机出现这种不当行为?
foo.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
HeaderY.h:
#error hurrah! I was included /* GOAL -- to have this file included
If it is included the precompiler
will print this message.
*/
P.S不要告诉我这是编译器错误。
认为这是一个ClearCase问题的理由:
怀疑我的理由的理由:
答案 0 :(得分:0)
如果不更换Vob,是否可以在全新Vob中导出代表该特定项目来源的Vob子集?
simple clearfsimport
会创建一个新的历史记录,而原始的Vob仍将用于:
我看到一些Vob腐败案例,而且该选项是最简单的解决方法。