1

我有一个简单的 html 文件,它接受存储库路径作为参数并将其传递给 python cgi 脚本,然后使用以下命令克隆存储库。

pr = subprocess.Popen(['/usr/bin/git clone ' + str(repoPath)],
   cwd=os.path.dirname('/clone/here/'),
   stdout=subprocess.PIPE,
   stderr=subprocess.PIPE,
   shell=True)
(out, error) = pr.communicate()
print out
print error

其中,repoPath 是我从 html 表单中读取其值的变量。当我执行上述脚本时,出现以下错误

致命:无法创建工作树目录“存储库”。:权限被拒绝

但是当我创建一个 python 脚本并直接运行上面的命令时,它工作正常。我在这里错过了什么吗?

4

2 回答 2

1

该目录已经存在,并且由不同的用户拥有(如果您手动测试,很可能是您的 shell 登录名)。

你做的事情真的很不安全。相反,您应该创建一个唯一的目录并在其中克隆。我找到了这个示例tempdir函数。(注意:如果您无法写入,则存在无限循环的风险$dir

这样,您将避免任何名称冲突。

于 2013-10-15T11:35:03.640 回答
0

应该做类似的事情:

subprocess.Popen(['git', 'clone', str(repoPath), '/clone/here'])

我真的不明白你在那里的 cwd 语句是怎么回事,但你需要靠近正确的位置,否则 cwd 可能是任何东西,比如'/'。

于 2013-10-15T11:10:09.513 回答