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进程 ”

-execvariables将启动子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)。