Django を使用して、ビューを使用して github リポジトリからテスト用の開発サーバーに変更をプルできるようにしたいと考えています。これは ubuntu オペレーティング システム上にあり、Apache Web サーバーを使用しています。
という小さな.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 シェルを作成すると、次のコマンドを使用してこれを実行できます。
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
スクリプトを使用すると、この問題を簡単に解決できると思いました。