Почему Perl не может найти мой файл в ClearCase?

Этот фрагмент 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.

Этот фрагмент кода возвращает, что файл существует, а другой - нет, когда они находятся в одной папке в одном и том же представлении.


person Kelvin    schedule 12.06.2009    source источник
comment
Что находится в $ x и как это связано с ClearQuest? Вы пробовали тестировать с -f?   -  person Sinan Ünür    schedule 12.06.2009
comment
$ x - это строка имени файла в ClearQuest -f имеет ту же проблему   -  person Kelvin    schedule 12.06.2009
comment
Можете попробовать добавить строчку print ls $x; над тестом, запустите его и посмотрите, что он делает?   -  person Alex Brown    schedule 12.06.2009
comment
Да, но что в $ x? Где хранится $ x? Я не уверен, как операторы Perl -X должны применяться к файлам, которые могут находиться в частном хранилище какого-либо приложения?   -  person Sinan Ünür    schedule 12.06.2009
comment
ClearQuest - это программа для отслеживания проблем. Вы имеете в виду ClearCase?   -  person Michael Carman    schedule 12.06.2009
comment
$ x - это строка, которую я установил в скрипте выше, это файл, существующий в ClearQuest. Он работает с некоторыми файлами, но не работает с другими. Я полагаю, что это какая-то аномалия ClearQuest, о которой я в настоящее время не подозреваю   -  person Kelvin    schedule 12.06.2009
comment
Хорошо, ClearCase имеет больше смысла. Можете ли вы предоставить значение $ x и некоторую информацию о представлении. (снимок или динамический, Windows или Unix и т. д.)   -  person Michael Carman    schedule 12.06.2009


Ответы (2)


Clearcase хранит свои файлы в виде каталогов.

Арик пытается сказать вам, что 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 или полученная с помощью другого средства) вполне может быть удалена в динамическом представлении (на самом деле "rm named").
Это означает, что файл может на него будет ссылаться ClearQuest или какое-либо действие ClearCase, но он не будет виден напрямую с ClearCase в динамическом представлении.
Однако его расширенное имя пути по-прежнему будет доступно в том же динамическом представлении.

person VonC    schedule 12.06.2009
comment
Кроме того, каталоги имеют версии; файл может не существовать в выбранной (через спецификацию конфигурации представления) версии каталога. В общем случае вам может потребоваться использовать синтаксис расширенного пути и для промежуточных каталогов. например /foo/bar@@/main/1/baz.txt@@/main/3 - person Michael Carman; 22.01.2015

Clearcase хранит свои «файлы» в виде каталогов. Вы можете войти в файл с помощью cd и попасть в фактический каталог, который он использует для хранения всех ревизий файла; Хотя перехватчики ОС обычно работают, возможно, из-за этого Perl не распознает некоторые файлы.

person Aric TenEyck    schedule 12.06.2009
comment
Я никогда не использовал ClearCase, но нет ли какого-то API для проверки файлов на наличие, запроса их версий и т. Д.? - person Sinan Ünür; 12.06.2009
comment
@Sinan Unur: clearcase использует виртуальную файловую систему; предполагается, что вы можете относиться к нему так же, как к обычному, но иногда это выходит из строя. - person ysth; 12.06.2009