1

実行に 1 分かかる post-receive フックが 1 つあります。このフックを実行している間、他の誰もプッシュできないようにする必要があります。

これを行う方法はありますか?またはクライアントからのプッシュを許可しないように (リモートリポジトリで) git を構成するにはどうすればよいですか?

4

2 に答える 2

3

自分でやってください: post-receive フックでロックファイルを作成し、完了したら削除します。そのファイルが存在する場合にブロックするpre-receive フックを追加します。

ただし、これにより競合状態が許可されます。2 つのクライアントが同時にプッシュを開始すると、両方とも post-receive フックに到達します。なぜこの排他的アクセスが必要なのですか?

于 2012-12-05T08:07:30.267 に答える
0

すべてのプッシュgit configを否定することはないようです。

これにより、アクセスメカニズムを「壊す」ためのトリックが残ります。

  • ユーザーが ssh 経由で git リポジトリにアクセスしている場合は、~/.ssh/authorized_keys を一時的に移動します。
  • ユーザーが https アドレスを使用している場合は<git>/libexec/git-core/git-http-backend、それらのトランザクションに使用される実行可能ファイルを移動します。

どちらの場合も、クライアント側でエラー メッセージが表示されるため、これは適切な解決策ではありませんが、これらのファイルが移動されている間はプッシュを取得できません。

于 2012-12-05T07:07:39.497 に答える