Python y ClearCase setview

Me gustaría establecer una vista clara desde un script de Python y luego ejecutar comandos dentro de esa vista. He intentado usar varios métodos descritos aquí:

subproceso

Pero no he tenido ningún éxito. ¿Alguien sabe cómo lograr esto?

No recomendaría establecer una vista, porque setview un nuevo proceso.
Realmente prefiero trabajar con /view/viewTag/aVob/... después de iniciar la vista ( cleartool startview viewTag )

El problema del “proceso de generación” hace que todo sea demasiado complejo en mi opinión, y explica por qué tienes notas técnicas como:

  • “La configuración en una vista desde un script de shell no procesa los comandos restantes en el script “.

Los comandos que aparecen después de la ejecución de cleartool setview cmview no se procesan porque se genera un shell con exec() , que reemplaza el progtwig actual con un progtwig nuevo.

Esto significa que los segmentos de texto y código del proceso actual, que en este caso es el script que contiene todos los comandos, se reemplaza por el progtwig que se ejecuta, que es el shell invocado al ejecutar cleartool setview cmview .
Por lo tanto, ninguno de los comandos se procesa más allá del punto de invocación del setview .

  • ” Cómo se maneja el shell generado al emitir setview -exe o -login y afecta el proceso de subshell ”

La variable -exec iniciará un proceso de subshell e invocará el comando especificado en la vista dinámica especificada. El control se devuelve al shell principal una vez que el comando ha finalizado.
El -exec no establecerá la vista en el proceso de shell primario .
La subshell generada -exec heredará las variables de entorno del proceso de shell primario; sin embargo, las variables de entorno creadas en el shell secundario no volverán a pasar al shell primario.

Entonces, si realmente quieres usar setview , podrías (no probado directamente yo mismo):

  • tener un script en python llamando a setview
  • pero esa llamada a setview sería con un parámetro -exec siendo otra secuencia de comandos de python (haciendo lo que quiere hacer cuando ese /vobs está configurado con el contenido de dicha vista de conjunto.

Hilo viejo, pero solo tuve que trabajar en este problema, así que quizás sea de ayuda.

En tu script de python

 process = subprocess.Popen('usr/atria/bin/cleartool setview viewName') (out, err) = process.communicate('python script2Name') 

El comando .communicate puede recibir nuevos comandos, como si lo estuviera pasando a un nuevo shell (terminal).