Apacheに自分のGitリポジトリの状態を読み取るようにするにはどうすればよいですか?

Apacheに自分のGitリポジトリの状態を読み取るようにするにはどうすればよいですか?

私のWebサイトでは、Gitステータス(主に現在のコミットとブランチだけでなく、git ls-files --modifiedサーバー上で直接変更されたすべてのファイルも表示)を報告しているので、最新の状態であることを一目で確認できます。以前は機能していましたが、最新のGitでは、リポジトリを所有していないユーザーがそれを読むことはできません。

このコマンドはgit config --global --add safe.directory {$dir}原則として有効ですが、いいえうまくいかないので、うまくいかなかったので、www-dataファイルを作成$HOMEできる場所はありません。.gitconfig答えはですfatal: $HOME not set

ApacheにGitリポジトリに関するいくつかの事実を読み取る簡単な方法はありますか?これは、などのコマンドexec()を実行するために使用されるすべてのPHPコードです。git branch --show-currentgit log -1 --pretty=%H

ベストアンサー1

環境変数を設定できます。したがって、GIT_CONFIG_GLOBAL変更された構成を指すように設定すると、「no-$homeの問題」が解決されます。

を使用すると、-c key=value各通話の設定オプションを個別に設定でき、必要に応じてgit作業することもできます。

しかし、ええと。個人ファイルに対する読み取り権限を持つユーザーとしてPHPを実行しているようです!または、共有ストレージを専用ユーザーとして実行します。この場合、そのユーザーとしてPHPインタプリタを実行する方が適切です。または、Apacheを実行しているPHPインタプリタにプライベートファイルへの読み取りアクセスを許可します。これは基本的に一般的な仕事には適していません。実際には、1つのアクションのみを実行するラッパースクリプト(正しいオプションを使用してgitを呼び出し、引数としてブランチ名を渡すなど)を使用すると、これを追加する方が賢明です。 / etc / sudoersリポジトリを所有しているユーザーとして、PHPはそのタスクを実行するためにsudoを実行できますが(そのタスクのみを実行できます)、データを読み取ることはできません。


この事実を公に明らかにしたら、付け加えたいです。

exec()これはgit branch --show-current、次のコマンドを実行するために使用されるすべてのPHPコードです。git log -1 --pretty=%H

リモートコードの実行可能性が非常に高いようです。これを行うライブラリを使用する方が良いでしょう!

おすすめ記事