ローカル マシンからプッシュされたときに別のリポジトリに自動的にプッシュする中央リポジトリをセットアップしようとしています。私は数日間グーグルをしており、見つけたすべてのコマンドの組み合わせを試してみましたが、うまくいきませんでした。
セットアップ: 最初に中央リポジトリをベアとして作成し、それを非ベアとして 2 番目のマシンに複製しました。「www」と呼ばれるリモートとして 2 台目のマシンを 1 台目のマシンに追加しました。1台目から「git push www master」を手動で実行し、2台目をSSH経由でアップデートできることを確認しました。次に、リポジトリを HTTP 経由でローカルの開発マシンに複製しました。ローカルからセントラルに問題なくプッシュできます。
現在の形式の更新後のフック:
#!/bin/bash
cd /var/git_repos/site.git
unset $(git rev-parse --local-env-vars)
branch=$(git rev-parse --abbrev-ref HEAD)
if [ "$branch" == "master" ];
then
echo "Pushing $branch to www..."
env -i git push www master
fi
exec git update-server-info
私はさまざまな SO とブログの投稿からこれをまとめました。最初のマシンの CLI (「cd /var/git_repos/site.git/hooks; ./post-update」) から手動で実行すると正常に動作しますが、実行すると「www は Git リポジトリではありません」というエラー メッセージが表示されます。フックとして。
出力:
$ git push
Password:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 264 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Pushing master to www...
remote: fatal: 'www' does not appear to be a git repository
remote: fatal: The remote end hung up unexpectedly
To https://xxx@git.xxx.xxx/site.git
e3d3a1d..103c819 master -> master
誰が私が間違っているのか教えてもらえますか?
編集:私の最初の問題は、site.git のアクセス許可が完全に正しく設定されていないことであることがわかりました。その問題を解決したので、新しい問題が発生しました。
新しい出力:
$ git push
Password:
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 332 bytes, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: I am apache <---- Output of "whoami" for debugging
remote: Pushing master to www...
remote: ssh: connect to host 192.168.1.79 port 22: Permission denied
remote: fatal: The remote end hung up unexpectedly
To https://nnn@git.nnn.nnn/site.git
29d504c..f14f201 master -> master
/etc/sudoers ファイルに以下を追加しようとしましたが、うまくいきませんでした:
apache ALL=NOPASSWD: /usr/bin/ssh