【发布时间】:2021-01-25 09:14:15
【问题描述】:
我正在开发一个微服务,该微服务为用户编写了以下脚本,该用户希望将 ssh 放入远程环境并 git clone 存储库。我已经为环境指定了GIT_SSH 和GIT_PYTHON_GIT_EXECUTABLE,然后运行git clone。
def clone_if_local_repo_absent(local_repo_path, remote_repo_url):
GIT_SSH = '...'
GIT_PYTHON_GIT_EXECUTABLE = '/usr/bin/git'
my_env = os.environ.copy()
my_env["GIT_SSH"] = GIT_SSH
my_env["GIT_PYTHON_GIT_EXECUTABLE"] = GIT_PYTHON_GIT_EXECUTABLE
# Clones to directory specified
exe_command = shlex.split('git clone {remote_repo_url} {repo_name}'.format(remote_repo_url=remote_repo_url, repo_name=local_repo_path))
subprocess.check_call(exe_command, env=my_env, shell=True)
在运行脚本时,我收到错误:Command '['git', 'clone', remote_repo_url, 'LOCAL']' returned non-zero exit status 127.
我该如何解决这个错误?
【问题讨论】:
-
你为什么不使用gitpython之类的东西?
-
为什么是
str.format和shlex.split而不是简单的check_call(['git', 'clone', remote_repo_url, local_repo_path], ...)? -
关于错误 - 这意味着 git 失败。您是否从控制台尝试过
git clone remote_repo_url LOCAL并查看 git 抱怨什么? -
我无法使用 gitpython,因为它没有安装在远程环境中。 Git 也没有安装在远程环境中。所以我试图将 GIT_SSH 传递给
subprocess call中的git clone命令。但是,git clone仍然无法执行,因为它显示了退出状态 127
标签: python git ssh subprocess clone