使用 Django 我希望能够使用视图从 github 存储库中提取更改到开发服务器进行测试。这是在 ubuntu 操作系统上,我使用的是 Apache 网络服务器。
我制作了一个.sh
名为gitpull.sh
. 这个文件的内容是:
#!/bin/sh
cd /home/myrepo
env -i /usr/bin/git pull origin master
该文件的权限为:
-rwxrwxrwx 1 www-data www-data 64 Mar 10 01:19 gitpull.sh
如果我创建一个 python shell,我可以使用以下命令运行它:
import os
os.system('/home/myrepo/gitpull.sh')
这很好用,并且存储库会提取最新的更改。我还创建了一个执行以下操作的 Django 视图:
import os
def hook(request):
os.system('/home/courb/gitpull.sh')
template = loader.get_template('git.html')
context = RequestContext(request)
# Return output objects with template
return HttpResponse(template.render(context))
我遇到的问题是它没有像我预期的那样从存储库中提取。我认为这一定是权限问题,但我认为 apache/Django 是该www-data
组的一部分。
我也尝试通过以下方式使用 gitPython
import git
g = git.cmd.Git('/home/myrepo/')
g.pull()
但我收到一条关于连接被终止的错误消息。我认为.sh
脚本可能是解决此问题的更简单方法。