私は最近、毎日のワークフローでGitを使い始めました。Gitフックを使用してウェブサイトを展開するにはどうすればよいですか?
私はVPSのweblog.gitというフォルダの下に裸のオンラインレポ(git init --bare --shared)を置いて、必要に応じていつでもローカルからその変更をプッシュします。これは絶対にうまくいきます。現在、私のローカルリポジトリにデータを保存するときに、変更をオンラインでプッシュしますが、手動でファイルをpublic_htmlフォルダに移動する必要があります。
私はhttp://toroid.org/ams/git-website-howtoに記載されているようにgitフックを使用しようとしましたが、それは私のために働いていないアクセス許可です。
public_htmlとwebsite.gitの両方のフォルダはwww-data:開発者が所有していますが、ポスト受信フックが起動すると古いファイルとのリンクを解除できず、新しいファイルはjackによって自動的に所有されます:ジャックは私がSSHサーバーとのユーザーです。
マイフック/ポスト受けるファイルが実行可能であると含まれています
#!/bin/sh
GIT_WORK_TREE=/home/web/website.com/public_html git checkout -f
そして、私のオンラインレポは、私が間違って何をやっている
/home/web/website.com/website.git
に保存されていますか?
感謝をしなければなりません。あなたが正しいです、それは許可の問題です!私はpublic_htmlフォルダを777に設定し、すべてのユーザがそれに書き込み、ファイルを変更してからプッシュを実行することができました。エラーはありませんでした.public_htmlのファイルは、所有者をwww-dataからjackに変更しました(ジャックがフックを実行しているので、あなたが言うように)、ファイルも755に変更されました。まだ更新していない!私は他の人がこれをどのように動かすのかと思います...? –
Hm。すべてを非常に書き込み可能にしたい場合は、 'git checkout -f'を実行する前に' umask 0'を追加してみてください。また、git 1.7.4で修正されたバグのために、私はすべてのパスが常に絶対的であり、$ GIT_WORK_TREEに "cd"したことを確認しなければなりませんでした。回答を編集するを参照してください。 – torek