Python和ClearCase setview

时间:2012-04-20 19:32:17

标签: python clearcase

我想从python脚本设置一个clearcase视图,然后在该视图中执行命令。我尝试过使用此处列出的各种方法:

subprocess

但我没有取得任何成功。有谁知道如何做到这一点?

2 个答案:

答案 0 :(得分:3)

我不建议设置视图,因为setview本身会产生一个新进程 我真的更喜欢在starting the view/view/viewTag/aVob/...

之后使用cleartool startview viewTag

在我看来,“生成过程”问题使得所有事情都过于复杂,并解释了为什么你有这样的技术手段:

  

执行cleartool setview cmview后出现的所有命令都不会被处理,因为shell会被exec()生成,后者会用新程序替换当前程序。

     

这意味着当前进程的文本和代码段(在本例中是包含所有命令的脚本)将被执行的程序替换,该程序是通过运行cleartool setview cmview调用的shell。   因此,除了调用setview之外,没有任何命令被处理。

  

-exec变量将启动子shell进程并在指定的动态视图中调用指定的命令。一旦命令完成,控制将返回到父shell    -exec不会在父shell进程中设置视图   -exec生成的子shell将继承父shell进程的Environment变量;但是,在子shell中创建的Environment变量不会传回父shell。

因此,如果真的想要使用setview,您可以(不是我自己直接测试):

  • 有一个调用setview
  • 的python脚本
  • setview调用将-exec参数作为另一个python脚本(当/vobs配置了所述设置视图的内容时,执行您要执行的操作。< / LI>

答案 1 :(得分:1)

旧线程,但我只是必须解决这个问题,所以也许是帮助。

在你的python脚本中

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

.communicate可以传递新命令,就好像你将它传递给一个新的shell(终端)。