Python和ClearCase setview
我想从python脚本中设置一个清晰的视图,然后在该视图内执行命令。 我曾尝试使用这里列出的各种方法:
子
但我还没有成功。 有谁知道如何做到这一点?
我不会build议设置一个视图,因为setview
本身产生一个新的过程。
在启动视图 ( cleartool startview viewTag
)后,我真的更喜欢使用/view/viewTag/aVob/...
在我看来,“产卵过程”问题使得所有事情都变得过于复杂,并解释了为什么你有如下的技术手段:
- “ 从shell脚本设置视图不会处理脚本中剩余的命令 ”。
执行
cleartool setview cmview
后出现的任何命令都不会被处理,因为shell是用exec()
产生的,而exec()
会用新程序replace当前程序。这意味着当前进程的文本和代码段,在这种情况下是包含所有命令的脚本,被执行的程序取代,这是通过运行
cleartool setview cmview
调用的shell。
因此,没有任何命令超出了setview
的调用点。
- “ 如何通过发出setview -exe或-login处理衍生的shell并影响子shell进程 ”
-exec
variables将启动子shell进程并在指定的dynamic视图中调用指定的命令。 一旦命令完成,控制就返回到父shell。
-exec
不会在父shell进程中设置视图 。
-exec
派生的子shell将inheritance父shell进程的环境variables; 但是,在子shell中创build的环境variables将不会传递回父shell。
所以,如果你真的想使用setview
,你可以(不直接testing自己):
- 有一个调用
setview
的python脚本 - 但是这个
setview
调用会使用一个-exec
参数作为另一个python脚本(当你使用set view的内容configuration/vobs
时候,做你想做的事情。
老线程,但我只是在这个问题上工作,所以也许帮助。
在你的Python脚本
process = subprocess.Popen('usr/atria/bin/cleartool setview viewName') (out, err) = process.communicate('python script2Name')
.communicate可以通过新的命令,就好像你将它传递给一个新的shell(terminal)。