5

我使用 Apache+mod_wsgi 托管的 django 项目。我正在尝试通过子进程使用 git 命令提取更新,例如:

subprocess.check_output(['git', 'pull', 'origin', 'mybranch']) 

但是,我收到如下错误:

Command '['git', 'pull', 'origin', 'mybranch']' returned non-zero exit status 128

当我通过浏览器调用此函数时出现此问题。如果我subprocess.check_output(['git', 'pull', 'origin', 'mybranch'])从 python sell 运行,就不会出错。它按预期完美运行。

4

2 回答 2

1

我用 git grep 两次遇到同样的问题。

第二次是因为我忘记添加www-data到对 git 存储库文件夹具有读取权限的组中。

此外,由于 git 命令需要从 git repo 内部运行,您可能想尝试在 git main 命令之后添加'--git-dir=''--work-tree='在参数列表中:

   gd = '--git-dir=' + os.path.join(repo_path, '.git')
   wt = '--work-tree=' + repo_path
   gg_matches = subprocess.check_output(["git", gd, wt, "grep"] + gg_opt)

如果您的 cwd 与您的 repo_path 不同,则它是必需的。

于 2013-08-19T23:49:47.887 回答
0

我无法重现这一点,因为该命令在 shell 中也适用于我,但是在 Apache+mod_wsgi 下运行时添加 shell=True 可能会修复它

于 2013-06-12T12:28:18.490 回答