tags:

views:

326

answers:

2

This piece of Perl is telling me that a file in ClearCase doesn't exist when it does;

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

Has anyone seen this before?

Some files return fine. Got me stumped.

Clearcase view is dynamic, hosted on unix.

This piece of code is returning that a file exists and another doesn't when they are in the same folder on the same view.

+2  A: 

Clearcase stores its 'files' as directories. You can cd into an file and get into the actual directory that it's using to store all of the revisions of a file; While the OS hooks usually work, perhaps this is causing Perl to not recognize some of the files.

Aric TenEyck
I have never used ClearCase but isn't there some kind of API to check files for existence, query their versions etc?
Sinan Ünür
@Sinan Unur: clearcase uses a virtual filesystem; you are *supposed* to be able to treat it just like a regular one, but sometimes that breaks down.
ysth
@ysth Thank you.
Sinan Ünür
+3  A: 

Clearcase stores its 'files' as directories

What Aric is trying to tell you is that ClearCase uses extended path names, "extended" because it extends the file name with version path.

So in a dynamic view, any file can be described to reveal its versioning path:

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

In a dynamic view, you can actually explore the versions of a file (hence the "file as directories") part

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

Now, if ClearQuest (the issue tracking system) were used here, it would reference activities (change set of file set) of ClearCase.

But with ClearCase, a version of a file (referenced by ClearQuest or obtained through another mean) can very well has been deleted in the dynamic view ("rmnamed" actually).
Meaning a file may be referenced by ClearQuest or by some ClearCase activity, but not be visible directly with ClearCase in the dynamic view.
However, its extended path name would still be accessible in that same dynamic view.

VonC