3

私はGitolite更新フックをVREFとして追加していますが、gitolite-adminリポジトリを除くすべてのリポジトリにそれを適用する方法があるかどうか疑問に思っていました。

フックを適用したいすべてのリポジトリをリストするのではなく、もっと簡単な方法があると便利です。

現在私は持っています:

repo @all
-    VREF/update    =   @all

gitolite-adminリポジトリの例外をその上に追加することを考えていました。何かのようなもの:

repo gitolite-admin
RW+  VREF/update    =   @all

repo @all
-    VREF/update    =   @all

このようなルールを機能させる方法はありますか?助けてくれてありがとう!(私はこの方法を試しましたが、うまくいかなかったようです)

4

1 に答える 1

3

( 「g3」またはGitolite V3VREFで紹介された)あまり詳しくない他の読者のためだけに。

VREFルールの背後にある考え方は次のとおりです。

  • このユーザーに適用されるルールで始まるすべてのrefexに対してVREF/FOO/、呼び出されたプログラムへの呼び出しFOOがトリガーされます。VREFルールがそのユーザーに適用されない場合、プログラムは呼び出されないことに注意してください。

これが、フックがgitoliteによって予約されているupdate場合でも、''フックを定義できる理由です。 通常のフックでは、3つの引数(ref、古いSHA、新しいSHA)が必要です。 すべてのVREFはこれらの3つを取得し、その後に少なくとも4つが続きます。' 'VREFは、余分な引数を無視する必要があります。update
update
update

  • fallthruは成功を検討しています(つまり、VREFが適用されていないためにリポジトリでgit操作が拒否されることはありません)
    fallthruが「失敗」と見なされた場合、次のような「成功ルール」を追加する必要があります。このリポジトリで使用したすべてのvref。いずれの場合も、そのvrefのコンテキストでまだ言及されていないすべてのユーザーが一覧表示されます。

VREFプログラムを考慮するupdateと、更新スクリプトがコンテキストで呼び出されたことを認識できるようにするパラメーターを追加できますgitolite-admin(何もしないでください)。

repo gitolite-admin
-  VREF/update/donothing    =   @all

repo @all
-  VREF/update    =   @all
于 2012-07-17T06:30:41.807 に答える