1. ホーム
  2. git

Git リモート/共有プレコミットフック

2023-11-18 19:34:24

質問

1 つの公式リポジトリをリモートとし、そこからクローンされた複数のローカルリポジトリがある場合、事前コミットフックをそのメインリポジトリ上でスクリプト化し、そのすべてのクローンに対して強制することができますか?

どのように解決するのですか?

フックはクローンされないので、そうはならないと思います。

そのフックスクリプト自体がバージョン管理され、クローンサーバーにリンク(シンボリックリンク)されるなら可能かもしれません(OSがそのリンク機能をサポートしていればの話ですが)。

あるいは、もしフックが git テンプレートディレクトリ の一部である場合(これはクローンレポに存在することを保証するだけで、実際に使用され実行されることを保証するものではありません)。

しかし、コミットを強制するための "central" のような方法はないと思います。


Jefromiがコメントでさらに明確に説明しているように(強調)

レポと一緒に強制フックを配布するのは、本当にgitリポジトリの考え方に反していると思うのです。

私のクローンは私のリポジトリです。 . フックを実行するかどうかの選択も含めて、好きなように git を使うことができるはずです。

(そして、セキュリティの観点からは、それは本当にちょっと怖いことです。私が特定のgitコマンドを実行するたびに、特定のスクリプトを実行するように強制する能力を誰も持ってはいけません)。

私はそのコメントに同意します。そして、特定の特化したレポで、ローカルに適用されるルールを強制する方法しか見たことがありません。

たとえば、中央リポジトリに直接プッシュするのではなく、まず QA リポジトリにプッシュし、そのリポジトリは特定のルールに従っている場合にのみあなたのコミットを受け入れます。もしそうであれば、QA リポはあなたのコミットを中央リポにプッシュします。

今述べたことから直接的に導かれるもうひとつの例は、" です。 Git によるサーバーレス継続的インテグレーション "を強制する方法です。 ローカルで プライベート ビルドを強制する方法です。