2011-01-24 9 views
5

私はgitとunixの両方に慣れています。私はec2でセットアップしたリポジトリに単純なgit post-receiveフックを作成しようとしています。 hooksフォルダには、公開サイトの作業ディレクトリを更新しようとするpost-receiveという名前のファイルがあります。基本的なgitフックを理解する

#!/bin/sh 

echo 'hi git' 
cd /home/www-data/web2py/applications/init 
sudo git checkout . 
sudo git pull 
echo 'done' 

しかし、プッシュ後、何も起こっていないようです。サイトの作業ディレクトリは更新されず、git logを実行するとエラーやエコーの兆候はありません。私は何かを欠いていると思いますか?ありがとう。

+1

私はあなたが 'git pull'の代わりに' git fetch'をしたいと思っています。なぜなら、pullは入ってくるヘッドを新しいローカルヘッドにマージしようとし、フェッチは新しい変更だけを取得するからです。 – Rudi

+0

@Rudiこれを拡張して、おそらくいくつかの例がありますか?私はgit pullを使用していましたが、それは私が望むように動作しているようです - 私たちは変更をプッシュし、パブリックサイトは自動的に更新されます - しかし、私はまだgit fetchまたはgit branchesを私は関係する問題をよく理解していません。私は2人のチームの一員で、基本的にブランチレスSVNのようなgitを使っています。このワークフローに満足していますが、gitの利点を生かすことに非常に興味があり、しかし、私はまだ語彙をつかまえていません。ありがとう。 – Dane

+0

git pullはローカルの変更を新しく入ってくるものとマージしようとします。 Websideフォルダに誰かがコミットすることがない限り、これは問題ありません。しかし、誰かがそこにあるものをコミットすると、次のプルは入ってくる変更をローカルコミットとマージしようとします。競合のためにこのマージが失敗すると、フォルダは競合するファイルすべてに矛盾マーカーが付いた状態になります。これはおそらくあなたが望むものではありません。 – Rudi

答えて

4

最初に:git logはgitバイナリのログではありません。 :)コミットとそのリビジョンを表示するために使用されます。

"hi git"と "done"の出力がどこかにありますか?私の推測では、あなたのフックは実行可能ではありません。 Run chmod +x your_hook - 実行可能にします。

+0

ビンゴ。本当にありがとう。 – Dane

関連する問題