6

ユーザーのアクションをデータベースに記録するプロジェクトとして、いくつかの git フックを作成する予定です。このデータベースは、彼のすべてのアクティビティのクエリに使用できます。私が記録しようとしているアクションは

  • 専念
  • 引く
  • 押す
  • マージ
  • ブランチ

これを、パッケージ マネージャー経由でインストールできるディストリビューションにパッケージ化したいと考えています。Git は、そのようなものを配置することでグローバルフックを許可します$PREFIX/share/templates/hooks

現在、無効になっているフックがいくつかあります(.sample名前に が追加されています)。新しいリポジトリが作成されると、これらのフックは.gitリポジトリのフォルダーにコピーされます

ユーザーがこれらのフックとフックのパッケージをインストールするpost-commitpost-update、すでに有効になっています。この場合、スクリプト ファイルは上書きされます。これはまずいですね

これは、git がアクションごとに 1 つのフック ファイルしか持たないことを意味します。1 回のアクションで 3 つのフックを保持する必要がある場合、それは不可能です。これは、パッケージ マネージャーからの自動インストールによって競合が発生する可能性があることを意味します。

ここで、デフォルトで有効になっているファイルを上書きするフックをパッケージ化したとします。ユーザーがこれらのファイルにさらにアクションを追加したい場合、パッケージをアンインストールすることにした場合、カスタム コマンドも削除されますか?

この点でgitはかなり賢いと思っていましたが、間違っていました:(

post-commitおよびまたは任意のアクションという名前のフォルダーが必要でありpost-update、git はそのフォルダー内のすべてのスクリプトを実行する必要があります。現在の状況に対処する方法を探し続けています。

4

1 に答える 1

3

「post-commit-hooks」サブディレクトリを探し、そこにあるすべてのスクリプトを一覧表示して実行する post-commit フック (たとえば) を作成してみませんか?
(正常に実行されなかった最初のものは、すべてのポストコミット フックに失敗します)

ユーザーが定義済みのテンプレート ディレクトリから Git リポジトリを初期化すると、すべてのユーザーが新しいリポジトリでそれらの特別なスクリプトを確実に取得できるようになります。

于 2010-11-13T14:51:43.143 に答える