16

Gitディストリビューションのフックを使用post-receive-emailして、Gitリポジトリが更新されたときに特定のユーザーに電子メールを送信しています(フックはから呼び出されますpost-receive)。

私のリポジトリはすべて手動で管理されていました。今では、非常に多くのリポジトリと非常に多くのユーザーとグループを取得しているため、Gitリポジトリ管理システムにアップグレードする必要があります。ギトライトを選びました。

しかし、私は電子メール通知を構成する方法に少し戸惑っています。

更新:質問を少し詳しく説明します:

最初の質問は、フックをどこに置くべきか、そしてそれがGitoliteで機能するように何らかの方法で変更する必要があるかということです。

2番目の質問:

標準フックは、 :、およびpost-receive-emailの3つのパラメーターに依存します。*.git/confighooks.envelopesenderhooks.emailprefixhooks.mailinglist

これらのパラメーターは、一般に、Gitoliteの下で移動するリポジトリごとに異なります。実際には、同じ権限グループ(リポジトリにアクセスできるユーザー、通知を受信するユーザーなど)については同じですが、そうではありません。

config各リポジトリのファイルを手動で編集することは避けたいです。Gitolite全体に対して、すべてを同じ集中化された場所に構成できれば、はるかに楽しいでしょう。

それで、何かヒントはありますか?

4

4 に答える 4

18

あなたは初心者のためのドキュメントフックを見ることができます:

私(管理者)はどこにフックを置きますか?

一般に、すべてのフックはhooks/commonディレクトリに入ります。adminリポジトリ用の特別な更新後フックのみがになりhooks/gitolite-adminます。

しかし、「ミラーリング」に関するGitoliteV3 のドキュメントは、カスタムフックの代替手段を提供します。


2番目の質問の場合:

各リポジトリの設定ファイルを手動で編集することは避けたいです。
Gitolite全体に対して、すべてを同じ集中化された場所に構成できれば、はるかに楽しいでしょう。

doc gitolite.confは非常に明確です:

リポジトリ固有のgitconfigコマンド

git config一部のリポジトリの設定を指定したい場合があります。
たとえば、プッシュが発生したときに電子メールを送信するカスタムの受信後フックがあり、このフックは電子メールの送信先などを知る必要があります。

git config「レポ」段落内で次のように指定することにより、値を設定できます。

使用例:各リポジトリに固有の構成情報を必要とするフックを配置した場合は、次のhooks/commonように実行できます。

repo gitolite
    config hooks.mailinglist = gitolite-commits@example.tld
    config hooks.emailprefix = "[gitolite] "
    config foo.bar = ""
    config foo.baz =

構文は単純です。

config sectionname.keyname = [optional value_string]

これは、単純な " git config section.key value"(上記の最初の3つの例の場合)または " git config --unset-all section.key"(最後の例の場合)のいずれかを実行します。
他の形式(、、--addなどvalue_regex)はサポートされていません。

注:rcファイルに適切な設定がない限り、これは機能しません。変数に関するコメントを参照してください$GL_GITCONFIG_KEYS $GIT_CONFIG_KEYS詳細とセキュリティ情報については、 gitoliteファイル(現在はGitoliteV3または'g3')にあります。rc

于 2011-02-21T07:43:57.450 に答える
6

現時点では、これは機能しません。

repo @all
    config foo.bar = "baz"

私はあなたがそれを機能させたいと思うと思いますが、他の圧力と回避策があるという事実のために、今のところ私のリストには少し低いです:

@almostall = repo1 repo2 repo3
@almostall = repo4 repo5 repo6 [add as many more as you like]

[... later ...]
repo @almostall
    config foo.bar = "baz"

お役に立てば幸いです。@allの見落としについては申し訳ありません。

于 2011-03-03T07:13:47.010 に答える
1

これは、リポジトリと同じ名前でgitolite.confに説明を追加するための簡単なワンライナーです。この大きな@almostallアプローチとgitoliteを使用している場合は、これが必要です。これにより、各リポジトリの説明が得られます。これにより、入力にかかる時間を1時間節約できたので、次のことを共有する必要がありました。

最初に試してください:

sed 's/^\(repo *\)\(.*\)/\1\2\n\t\t\2 = "\2"/' gitolite.conf

次に、編集を適切に実行してみますが、それでも事前にバックアップを作成します。

cp gitolite.conf gitolite.conf.backup

次に、その場で編集します。

sed -i 's/^\(repo *\)\(.*\)/\1\2\n\t\t\2 = "\2"/' gitolite.conf

乾杯!

于 2011-08-24T12:34:00.650 に答える
1

gitoliteクックブックには、フックの構成方法が記載されています。

1.gitoliteでローカルの非コアプログラムを有効にする

gitolite構成ファイル(通常~git/.gitolite.rc)を編集し、次の行のコメントを解除します。

LOCAL_CODE => "$rc{GL_ADMIN_BASE}/local"

セキュリティ警告を必ずお読みください。

2.リポジトリ固有のフックを有効にします

repo-specific-hooksgitolite構成ファイルの行のコメントを解除します。

3.メールフックを追加します

対応する受信後フック実行可能ファイル(私はgit-multimailを使用)をファイルとしてgitolite-adminリポジトリに配置します/local/hooks/repo-specific/git-multimail

コミットしてプッシュします。

4.マルチメールフックの設定を構成します

gitolite構成ファイルを介して構成キーを追加できるようにするには、gitolite構成ファイルを編集し~git/.gitolite.rc、次の行を更新します。

GIT_CONFIG_KEYS => ".*"

セキュリティ警告を必ずお読みください。に絞り込むことができGIT_CONFIG_KEYS => "multimailhook\..*"ます。

5.マルチメールメールフックを設定します

これは、 gitolite-adminリポジトリ内のgitolite.confファイルの構成例です。

repo @all
    config multimailhook.environment      = gitolite
    config multimailhook.from             = git@gitserver.com
    config multimailhook.mailinglist      = your@email.com

repo xyz
    option hook.post-receive = git-multimail

リポジトリ固有のフックを使用して、gitolite-adminリポジトリに保存することにしました。または、グローバルフック(/local/hooks/common)を使用するか、gitoliteサーバーの別の場所に保存してLOCAL_CODEそこを指すこともできます。

于 2018-02-13T00:28:18.140 に答える