2009-06-12 18 views
5

Ten fragment Perla mówi mi, że plik w ClearCase nie istnieje, kiedy to robi;Dlaczego Perl nie może znaleźć mojego pliku w ClearCase?

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

Czy ktoś to widział wcześniej?

Niektóre pliki zwracają się poprawnie. Mam mnie zakłopotany.

Widok Clearcase jest dynamiczny, hostowany na systemie UNIX.

Ten fragment kodu powraca, że ​​plik istnieje, a inny nie, gdy znajduje się w tym samym folderze w tym samym widoku.

+1

Co jest w $ x i jak jest to związane z ClearQuest? Czy próbowałeś testować przy pomocy -f? –

+0

$ x jest ciągiem nazwy pliku w ClearQuest -f ma ten sam problem – Kelvin

+1

Czy możesz spróbować dodać linię wydrukować 'ls $ x'; powyżej testu i uruchomić go i zobaczyć, co robi? –

Odpowiedz

3

Clearcase przechowuje swoje "pliki" jako katalogi. Możesz zapisać w pliku i przejść do rzeczywistego katalogu, którego używa do przechowywania wszystkich wersji pliku; Podczas gdy haczyki OS zwykle działają, być może powoduje to, że Perl nie rozpoznaje niektórych plików.

+0

Nigdy nie używałem ClearCase, ale czy nie istnieje jakiś interfejs API do sprawdzania plików pod kątem istnienia, sprawdzania ich wersji itp.? –

+2

@Sinan Unur: clearcase używa wirtualnego systemu plików; jesteś * przypuszczany *, aby móc traktować go tak jak zwykły, ale czasami się psuje. – ysth

+0

@ysth Dziękuję. –

6

clearcase przechowuje swoje pliki '' jak katalogi

Co Aric is trying to tell you że ClearCase używa rozszerzonych nazw ścieżek, "extended", ponieważ rozciąga nazwę pliku ze ścieżką wersji.

Więc w dynamicznym widoku, każdy plik może być opisana ujawnić swoją ścieżkę wersjonowania:

$ ct ls 
myFile 
$ ct descr -l myFile 
[email protected]@/main/3 

w dynamicznym widoku można właściwie zbadać wersje pliku (stąd „jak plik katalogów”) część

$ cd [email protected]@ 
$ ls 
main 
$ cd main 
$ ls 
3 
$ cat 3 
... // content of third version of myFile 

teraz, jeśli ClearQuest (system śledzenia problem) użyto tutaj, byłoby odwołać działania (zmiana zestawu zestaw plików) z ClearCase.

Ale z ClearCase, wersja pliku (odniesienie przez ClearQuest lub uzyskane przez inną średnią) może bardzo dobrze został usunięty w widoku dynamicznym (faktycznie "rmnamed").
Znaczenie pliku może odnosić się do ClearQuest lub przez jakąś akcję ClearCase, ale nie może być widoczne bezpośrednio z ClearCase w widoku dynamicznym.
Jednak rozszerzona nazwa ścieżki będzie nadal dostępna w tym samym widoku dynamicznym.

+0

Dodatkowo katalogi są wersjonowane; plik może nie istnieć w wybranej (poprzez konfiguracyjną specyfikację) wersji katalogu. W ogólnym przypadku może być konieczne użycie składni rozszerzonej ścieżki również w katalogach pośrednich. na przykład '/ foo/bar @@/main/1/baz.txt @@/main/3' –

Powiązane problemy