为啥 Perl 在 ClearCase 中找不到我的文件?

Posted

技术标签:

【中文标题】为啥 Perl 在 ClearCase 中找不到我的文件?【英文标题】:Why can't Perl find my file that is in ClearCase?为什么 Perl 在 ClearCase 中找不到我的文件? 【发布时间】:2010-11-02 12:18:06 【问题描述】:

这段 Perl 告诉我 ClearCase 中的文件不存在时;

$x = "PATH/TO/FILE"
if (-e $x) 
   print "This file exists on the file system";
 else 
   print "I can't see this file";

有人见过吗?

某些文件可以正常返回。把我难住了。

Clearcase 视图是动态的,托管在 unix 上。

当它们位于同一视图的同一文件夹中时,这段代码返回一个文件存在而另一个文件不存在。

【问题讨论】:

$x 中有什么,它与 ClearQuest 有什么关系?您是否尝试使用 -f 进行测试? $x是ClearQuest中文件名的字符串 -f有同样的问题 你可以尝试添加行打印ls $x;上面的测试并运行它,看看它做了什么? 是的,但是 $x 中有什么? $x 存储在哪里?我不确定 Perl 的 -X 运算符应该如何应用于可能位于某些应用程序私有存储中的文件? ClearQuest 是一个问题跟踪程序。你是说 ClearCase 吗? 【参考方案1】:

Clearcase 将其“文件”存储为目录

Aric is trying to tell you 是 ClearCase 使用扩展路径名,“扩展”是因为它使用版本路径扩展了文件名。

因此,在动态视图中,可以描述任何文件以显示其版本控制路径:

$ ct ls
myFile
$ ct descr -l myFile
myFile@@/main/3

在动态视图中,您实际上可以探索文件的版本(因此是“文件作为目录”)部分

$ cd myFile@@
$ ls
main
$ cd main
$ ls
3
$ cat 3
... // content of third version of myFile

现在,如果在这里使用 ClearQuest(问题跟踪系统),它将引用 ClearCase 的活动(文件集的更改集)。

但是使用 ClearCase,文件的一个版本(由 ClearQuest 引用或通过其他方式获得)可以很好地在动态视图中被删除(实际上是“rmnamed”)。 这意味着文件可能被 ClearQuest 或某些 ClearCase 活动引用,但在动态视图中不能直接通过 ClearCase 可见。 但是,它的扩展路径名仍然可以在同一个动态视图中访问。

【讨论】:

另外,目录是版本化的;该文件可能不存在于所选(通过视图的配置规范)版本的目录中。在一般情况下,您可能还需要在中间目录上使用扩展路径语法。例如/foo/bar@@/main/1/baz.txt@@/main/3【参考方案2】:

Clearcase 将其“文件”存储为目录。您可以 cd 进入一个文件并进入它用于存储文件所有修订的实际目录;虽然 OS 挂钩通常可以工作,但这可能会导致 Perl 无法识别某些文件。

【讨论】:

我从未使用过 ClearCase,但是否有某种 API 可以检查文件是否存在、查询其版本等? @Sinan Unur:clearcase 使用虚拟文件系统;您应该能够像对待普通人一样对待它,但有时会发生故障。

以上是关于为啥 Perl 在 ClearCase 中找不到我的文件?的主要内容,如果未能解决你的问题,请参考以下文章

在 @INC 中找不到 XML/LibXML.pm

Kotlin 在片段中找不到按钮 ID,为啥?

为啥我的 maven 模块在项目中找不到另一个模块? [复制]

为啥 XCode 4 在构建过程中找不到我的 .h 文件?

为啥我在命令提示符中找不到 PIP? [复制]

为啥我的 Auth0 在反应中找不到我的回调路由?