【问题标题】: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 吗?

标签: perl 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 使用虚拟文件系统;您应该能够像对待普通人一样对待它,但有时会发生故障。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2018-02-14
  • 2018-02-17
  • 2013-07-11
  • 2017-10-23
  • 2011-01-31
相关资源
最近更新 更多