No se puede automatizar la recuperación de git && git checkout usando Python

He automatizado el process de pago de git una twig particular que un usuario desea ingresar. Estoy usando el siguiente código python con subprocess para hacerlo,

from bitbucket.bitbucket import Bitbucket from sys import argv import subprocess prompt = '> ' print "Enter the name of branch you need to clone: " user_branch = raw_input(prompt) print "You Entenetworking: ",user_branch print "this will do a git status" cmd = subprocess.Popen(["git", "status"], stdout=subprocess.PIPE) output = cmd.communicate()[0] print output #for line in output: # output.split("\n"): if ("Untracked files:" or "Changes not staged for commit") in output: print "Need to do a Git stash" subprocess.Popen(["git", "stash"]) subprocess.Popen(["git fetch && git checkout"+(user_branch)]) else: print "simply do git checkout userbranch" subprocess.Popen(["git","pull"]) subprocess.Popen(["git fetch && git checkout"+(user_branch)]) 

Esto arroja:

 Enter the name of branch you need to clone: > release_4_0 You Entenetworking: release_4_0 this will do a git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean simply do git checkout userbranch Traceback (most recent call last): File "git_updater.py", line 25, in <module> subprocess.Popen(["git fetch && git checkout"+(user_branch)]) File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory 

Quiero ingresar solo el nombre de la twig que el usuario quiere pagar. ¿Tiene sentido esto?

 subprocess.Popen(["git fetch && git checkout"+(user_branch)]) 

debiera ser

 subprocess.Popen("git fetch && git checkout %s"%user_branch,shell=True) 

o podrías hacer algo como

 subprocess.Popen(["git", "fetch"]).communicate() subprocess.Popen(["git", "checkout", user_branch]) 

el problema es si el argumento es una list que espera file y arguments separados por comas (y no estoy seguro de cómo funcionaría &&)