実行に 1 分かかる post-receive フックが 1 つあります。このフックを実行している間、他の誰もプッシュできないようにする必要があります。
これを行う方法はありますか?またはクライアントからのプッシュを許可しないように (リモートリポジトリで) git を構成するにはどうすればよいですか?
実行に 1 分かかる post-receive フックが 1 つあります。このフックを実行している間、他の誰もプッシュできないようにする必要があります。
これを行う方法はありますか?またはクライアントからのプッシュを許可しないように (リモートリポジトリで) git を構成するにはどうすればよいですか?
自分でやってください: post-receive フックでロックファイルを作成し、完了したら削除します。そのファイルが存在する場合にブロックするpre-receive フックを追加します。
ただし、これにより競合状態が許可されます。2 つのクライアントが同時にプッシュを開始すると、両方とも post-receive フックに到達します。なぜこの排他的アクセスが必要なのですか?
すべてのプッシュgit config
を否定することはないようです。
これにより、アクセスメカニズムを「壊す」ためのトリックが残ります。
<git>/libexec/git-core/git-http-backend
、それらのトランザクションに使用される実行可能ファイルを移動します。どちらの場合も、クライアント側でエラー メッセージが表示されるため、これは適切な解決策ではありませんが、これらのファイルが移動されている間はプッシュを取得できません。