0

subprocess を使用して git ディレクトリのログを確認するコードがあります。私のコードは、ローカルの django 開発環境で実行すると正常に動作するようです。ただし、(Apache / mode_wsgi を使用して) デプロイすると、stdout read() からの出力は空に戻ります。私の開発マシンと本番マシンは現在同じです。また、すべてのファイルが読み取り可能であることも確認しました。

ここにデプロイされた後、Popen が出力を返さない理由を知っている人はいますか? ありがとう。

def getGitLogs(projectName, searchTerm=None, since):
    os.chdir(os.path.join(settings.SCM_GIT, projectName))
    cmd = "git log --since {0} -p".format(since)
    p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
    output = p.stdout.read()
    ### here output comes back as expected in dev environment, but empty in once deployed
    return filterCommits(parseCommits(output), searchTerm)
4

1 に答える 1

3
  1. chdirコマンドの一部としてチェーンします(つまり、 cd /foo/bar/zoo
  2. フルパスをgit

だからあなたのコマンドは結局cd /foo/bar/zoo && /usr/bin/git log --since

于 2012-05-18T06:10:34.907 に答える