1. ホーム
  2. git

gitを使用しているときに、個々のファイルやディレクトリをフォークでロックする方法はありますか?

2023-10-13 07:39:25

質問

私たちは同じ製品に取り組む 60 人以上の開発者からなるチームで、SVN から Git と GitHub に移行しようとしています。私たちは SVN で、個々のファイルがロックされ、開発者がコードをコミットしたいときはいつでも、そのファイルの所有者からロックを解除してもらう必要がある、というプロセスを持っています。私たち3人が、合計150以上のファイルのオーナーです。ロック解除の前には、コードレビューが行われます。

Github では、Fork-Clone モデルを使用する予定です。開発者のグループが取り組んでいる各プロジェクトはフォークを作成し、各開発者はフォークのクローンを作成し、コードを書き、オリジンにコミットし、その機能のリーダーは上流にプルリクエストを行う予定です。

これは問題ないように見えますが、問題は大きなプロジェクトが納品されたときに、レビューのために多くの変更をもたらし、それゆえファイル所有者の負荷を増大させることです。また、これは開発の後半サイクルで発生する可能性があり、したがって、プロジェクトが危険にさらされる可能性があります。

私たちがうまくいくかもしれないと考えた 1 つの方法は、git push がオリジン (フォーク) に行われるときにフックを持つことです。上流への最終レビュー git pull を 1 回行うことができます。

しかし、同じことを行うための github 拡張またはプッシュ フックを見つけることができませんでした。Github でこれを行う簡単な方法 (既存の拡張を読む) はありますか、それとも git で使用するのと同じフックを使用すべきですか?

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

このユースケースは、Git が SVN よりもずっと優れている理由の一つです --> リベース ! もしあなたが優れた git のワークフローに従っているなら、Pull Requests を提出する前に上流からリベースを行います。ファイルロックや他の人のコミットを踏んでしまうこと、マージの衝突などを心配する必要はありません。リベースでは、自分の作業をいったん脇に置いてリモートのコミットを適用し、その上で自分の作業を適用します。

これは、あなたのプロセスを再考し、git の強みに頼ることと、git の上に Subversion のワークフローを無理やり当てはめることが必要なだけだと思います。フォーククローンモデルも同様に見直す必要があるかもしれません。多くの場合、すべての開発者は自分自身のフォークを持っており、必要であればチーム間でリモートを使ってリポジトリを共有することができます。しかし、貢献者が同じオリジンを共有することは、いくつかの悪い習慣を作り出します。

Gitflow は非常に人気のある git ワークフローであり Github 自身がワークフローを共有し、いくつかのすばらしいヒントを提供しています。 .