4

これまでに行ったことは次のとおりです。

  1. Web サイトとその git リポジトリをホストするサーバーがあります。
  2. gitすべてのリポジトリを所有し、パスワードを入力せずに任意のユーザーとしてログインできるという名前のユーザーがいます。
  3. レポpost-receiveのディレクトリで呼び出されるフックを作成しました。hooks
  4. gitpullまた、情報をサイトに自動的にプルするというスクリプトも作成しました。

次のコマンドを入力すると、すべて問題ありません。

su - git -c "/git/sitename.git/hooks/post-receive"

しかし、開発マシンから何かをプッシュしても、スクリプトは実行されませんgitpull

ここに私のファイルがあります:

  • /etc/gitpull:

    #!/bin/bash
    su - $1 -c "cd ~/www;git pull;"
    
  • /git/sitename/hooks/post-receive:

    #!/bin/bash
    /etc/gitpull sitename
    

どうすればこれを修正できますか? 私は何を間違っていますか?

4

1 に答える 1

2

フックは実行可能としてマークする必要があります。そうしないと、gitはpost-receiveフックを実行しません。でテストする場合sh -c、実行権限チェックをバイパスしています。

あなたが実行すればそれはうまくいくに違いないchmod a+x /git/sitename.git/hooks/post-receive


そうじゃないですよね?

ああ、su実行するとパスワードの入力を求められますね。フックに入力を提供することはできないため/git/sitename.git/hooks/post-receive、通常のユーザーアカウントとして自分で入力し、ユーザーからの操作なしで実行できるようにする必要があります。

于 2012-11-04T19:00:08.143 に答える