1

特定のブランチとリポジトリの組み合わせに対してのみ、gitolite / gitサーバーでプッシュが受信されたときに機能するコミットフックを追加したいと思います(リポジトリ'dog'のブランチ'cat')。

私の環境:gitバージョン1.7.4.1、

私がこれまでにしたこと:

  1. /home/git/repositories/dog.git/hooks/post-receive.secondarygit/gitoliteサーバー上のファイルに触れました。

  2. 次の内容でファイルを編集しました。

    #!/bin/sh
    #
    refname="$1"
    oldrev="$2"
    newrev="$3"
    if [ "$refname" == "refs/heads/cat" ]
    then
       touch /tmp/test
    fi
    
  3. ファイルの所有者を「git」ユーザーに設定します

  4. ファイルのアクセス許可を700に設定します

  5. 「dog」リポジトリの「cat」ブランチへのコミットを実行しました

結果:テストファイルは作成されません

4

1 に答える 1

1

Gitolite v2(g2)フックチェーンセクションを見ると、2つのフックだけが" .secondary"拡張子に関係しています。

  • 更新フックは、すべてのリポジトリで使用され、gitoliteのアクセス制御に不可欠であるためです。
  • 更新後のフックは、gitolite-adminリポジトリでのみ使用されるため、構成などを「コンパイル」するために使用されます。

  • post-receiveミラーリングがアクティブになっている場合にのみ関係します。これは、gitoliteのインストールには当てはまりません)

したがって、「 gitoliteにフックをインストールする方法」で説明されているように、を宣言する必要はありません。フックを宣言するpost-receive.secondaryだけです。post-receive</path/to/gitolite>/hooks/common/


OPスペシャルソースは コメントで締めくくります:

リポジトリフォルダ(セカンダリフォルダではなく)にフックが必要でしたpost-receive。これが、実行されなかった主な理由だと思います。

The only other thing I changed in the end I believe was setting the perms from 700 (which should have been fine anyway?) to 755.
The hook now executes reliably.

I did not need to run the gl-setup script. Additionally I changed from the var assignment code as outlined above to a "while" on STDIN.

于 2012-06-15T18:55:31.317 に答える