1

使用 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脚本可能是解决此问题的更简单方法。

4

0 回答 0