2009-06-12 10 views
5

Esta parte de Perl me dice que un archivo en ClearCase no existe cuando lo hace;¿Por qué Perl no puede encontrar mi archivo que está en ClearCase?

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

¿Alguien ha visto esto antes?

Algunos archivos vuelven bien. Me tienes perplejo.

Clearcase view es dinámico, alojado en Unix.

Este código devuelve que existe un archivo y otro no cuando están en la misma carpeta en la misma vista.

+1

¿Cuánto cuesta $ x y cómo se relaciona esto con ClearQuest? ¿Intentó probar con -f? –

+0

$ x es la cadena del nombre del archivo en ClearQuest -f tiene el mismo problema – Kelvin

+1

Puede intentar agregar la línea imprimir 'ls $ x'; encima de la prueba y ejecutarlo y ver lo que hace? –

Respuesta

3

Clearcase almacena sus 'archivos' como directorios. Puede hacer un cd en un archivo y acceder al directorio real que está utilizando para almacenar todas las revisiones de un archivo; Si bien los enganches del sistema operativo generalmente funcionan, quizás esto esté causando que Perl no reconozca algunos de los archivos.

+0

Nunca he usado ClearCase, pero ¿no hay algún tipo de API para verificar la existencia de los archivos, consultar sus versiones, etc.? –

+2

@Sinan Unur: clearcase usa un sistema de archivos virtual; se supone que * puedes tratarlo como uno normal, pero a veces eso se descompone. – ysth

+0

@ysth Gracias. –

6

Clearcase almacena sus archivos '' como directorios

Lo Aric is trying to tell you es que utiliza ClearCase nombres de ruta largos, "extendida" porque extiende el nombre del archivo con la ruta versión .

Así, en una visión dinámica, cualquier archivo puede ser descrito para revelar su paso de versiones:

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

En una visión dinámica, en realidad se puede explorar las versiones de un archivo (de ahí el "archivo como directorios") parte

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

Ahora, si ClearQuest (el sistema de gestión de fallos) se utiliza aquí, se haría referencia a las actividades (conjunto de cambios del conjunto de archivos) de ClearCase.

Pero con ClearCase, un versión de un archivo (referenciado por ClearQuest u obtenido a través de otro medio) puede muy bien haberse eliminado en la vista dinámica ("rmnamed" en realidad).
Es posible que ClearQuest o alguna actividad de ClearCase haga referencia a un archivo, pero que no se vea directamente con ClearCase en la vista dinámica.
Sin embargo, su ruta de acceso extendida todavía estaría accesible en esa misma vista dinámica.

+0

Además, los directorios están versionados; el archivo puede no existir en la versión seleccionada (a través de la especificación de configuración de la vista) del directorio. En el caso general, puede que necesite usar también la sintaxis de ruta extendida en los directorios intermedios. p.ej. '/ foo/bar @@/main/1/baz.txt @@/main/3' –

Cuestiones relacionadas