Python и ClearCase setview

Я хотел бы установить прозрачный вид из скрипта Python, а затем выполнить команды в этом представлении. Я пытался использовать различные методы, изложенные здесь:

подпроцесс

но у меня не было никакого успеха. Кто-нибудь знает, как этого добиться?

2 ответа

Я бы не рекомендовал устанавливать вид, потому что setviewсам порождает новый процесс.
Я действительно предпочитаю работать с/view/viewTag/aVob/... после запуска просмотра (cleartool startview viewTag)

Проблема "процесса порождения" делает все это слишком сложным, на мой взгляд, и объясняет, почему у вас есть такие замечания, как:

Любые команды, которые появляются после выполнения cleartool setview cmview не обрабатываются, потому что оболочка порождается exec(), который заменяет текущую программу новой программой.

Это означает, что текстовые и кодовые сегменты текущего процесса, который в данном случае представляет собой сценарий, содержащий все команды, заменяются выполняемой программой, то есть оболочкой, вызываемой при выполнении cleartool setview cmview,
Следовательно, ни одна из команд не обрабатывается за пределами точки вызова setview,

-exec Переменная запустит процесс подоболочки и вызовет указанную команду в указанном динамическом представлении. Затем управление возвращается родительской оболочке после завершения команды.
-execне будет устанавливать представление в родительском процессе оболочки.
-exec порожденная подоболочка будет наследовать переменные окружения родительского процесса оболочки; однако переменные окружения, созданные в дочерней оболочке, не будут возвращаться в родительскую оболочку.

Так что если вы действительно хотите использовать setview, вы могли бы (не проверял непосредственно я):

  • есть вызов сценария Python setview
  • но это setview вызов будет с -exec параметр является еще одним скриптом Python (делать то, что вы хотите сделать, когда это /vobs настроен с содержанием указанного набора просмотра.

Старый поток, но я просто должен был работать над этим вопросом, так что, возможно, поможет.

В вашем скрипте Python

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

.communicate могут передаваться новые команды, как если бы вы передавали его новой оболочке (терминалу).

Другие вопросы по тегам