ユーザーのアクションをデータベースに記録するプロジェクトとして、いくつかの git フックを作成する予定です。このデータベースは、彼のすべてのアクティビティのクエリに使用できます。私が記録しようとしているアクションは
- 専念
- 引く
- 押す
- マージ
- ブランチ
これを、パッケージ マネージャー経由でインストールできるディストリビューションにパッケージ化したいと考えています。Git は、そのようなものを配置することでグローバルフックを許可します$PREFIX/share/templates/hooks
現在、無効になっているフックがいくつかあります(.sample
名前に が追加されています)。新しいリポジトリが作成されると、これらのフックは.git
リポジトリのフォルダーにコピーされます
ユーザーがこれらのフックとフックのパッケージをインストールするpost-commit
とpost-update
、すでに有効になっています。この場合、スクリプト ファイルは上書きされます。これはまずいですね
これは、git がアクションごとに 1 つのフック ファイルしか持たないことを意味します。1 回のアクションで 3 つのフックを保持する必要がある場合、それは不可能です。これは、パッケージ マネージャーからの自動インストールによって競合が発生する可能性があることを意味します。
ここで、デフォルトで有効になっているファイルを上書きするフックをパッケージ化したとします。ユーザーがこれらのファイルにさらにアクションを追加したい場合、パッケージをアンインストールすることにした場合、カスタム コマンドも削除されますか?
この点でgitはかなり賢いと思っていましたが、間違っていました:(
post-commit
およびまたは任意のアクションという名前のフォルダーが必要でありpost-update
、git はそのフォルダー内のすべてのスクリプトを実行する必要があります。現在の状況に対処する方法を探し続けています。