我想从 python 脚本设置为 clearcase 视图,然后在该视图中执行命令。我尝试使用此处列出的各种方法:
但我没有任何成功。有谁知道如何做到这一点?
我不建议设置视图,因为setview
它本身会产生一个新进程。
我真的更喜欢/view/viewTag/aVob/...
在启动视图后使用( cleartool startview viewTag
)
在我看来,“生成过程”问题让所有事情都变得过于复杂,并解释了为什么你有这样的技术说明:
执行后出现的任何命令
cleartool setview cmview
都不会被处理,因为 shell 是用 生成的exec()
,它将当前程序替换为新程序。这意味着当前进程的文本和代码段,在这种情况下是包含所有命令的脚本,被正在执行的程序所取代,这是由 running 调用的 shell
cleartool setview cmview
。
因此,任何命令都不会在setview
.
该
-exec
变量将启动一个子shell 进程并在指定的动态视图中调用指定的命令。一旦命令完成,控制权就会返回给父 shell。不会在父 shell 进程中设置
视图-exec
。
生成的-exec
子shell会继承父shell进程的环境变量;但是,在子 shell 中创建的环境变量不会传递回父 shell。
所以如果你真的想使用setview
,你可以(我自己没有直接测试过):
setview
setview
调用的参数将是另一个python脚本(当配置了所述设置视图的内容-exec
时,执行您想要执行的操作。/vobs
旧线程,但我只需要解决这个问题,所以也许有帮助。
在你的 python 脚本中
process = subprocess.Popen('usr/atria/bin/cleartool setview viewName')
(out, err) = process.communicate('python script2Name')
.communicate 可以传递新命令,就好像你将它传递给一个新的外壳(终端)一样。
另一种方法是
process = subprocess.Popen('usr/atria/bin/cleartool setview -exec "whatever command you want inside view" viewName')
(out, err) = process.communicate()