問題:複数のユーザーが同じ作業ディレクトリにアクセスできる場合、git
操作が実行されると、メタデータでアクセス許可の問題が発生する可能性があります。
免責事項:あなたが私を懲らしめる前に-作業ディレクトリを共有することはGitの略であり、この共有ディレクトリで読み取り専用操作以外のことをすることについて話しているのではないことを理解しています-私たちはすべての作業を自分のローカルリポジトリで行います。
私たちのアプローチは確かにベストプラクティスではないため、私たちがやろうとしていることを行う別の方法についての提案を受け入れていますが、他の人が聞くのに役立つ会話かどうかはわかりません。だから今のところ、私たちがこれをしている理由についていくつかの詳細を提供しましょう:
私たちのチームにはいくつかのビルドマスターがいます。Linuxサーバーにデプロイし、Gitから直接プルするビルドスクリプトを使用して、そこでビルドを実行します。現時点ではCI(Jenkins / Cruisecontrolなど)を使用できないため、チェックアウトしてQAビルドを実行するリポジトリがあります。
スクリプトの一部として実行するgit操作がいくつかあります。これには、コミットのタグ付けが含まれます(QA-current、QA-previousなどとしてタグ付けされます)。ですから、私たちは実際には完全に読み取り専用ではないと思います。ビルドスクリプトの性質上sudo
、共通ユーザーとして実行します(そのユーザーをDevAdminと呼びましょう)。これは悪い習慣である可能性があり、共有レポチェックアウトを使用する必要があるため、おそらく苦痛の原因であると思います。
その作業ディレクトリにいるときに常にsudoされていれば、これはすべて問題ありません。問題は、git pull
DevAdminとしてsudoされることなく、偶然に、または同様のことを行うことがあるということです。したがって、のほとんどのファイルは.git
DevAdmin(最初のクローンを実行した)によって所有されますが、これを行うと.git/objects
、特定のユーザーが所有するファイルを含むdirが作成されます。そして、これらはグループ書き込み不可として作成されます。ORIG_HEAD
たとえば、所有権が間違っていることにも気づきました。したがって、DevAdminとして何かを行おうとすると、問題が発生します。
この問題を解決するためにできることはありますか?今のところ、それが発生したことを認識してから、サーバー管理者にchown .git
DevAdminに戻るように依頼する必要があります。または、問題のメタファイルを削除するか、少なくともchmod
グループ書き込み可能にするようにユーザーに依頼します。これはすべて非常に悪いようです。
ビルドとメンテナンスのプロセスを大幅に変更する必要のないいくつかのオプションを検討しました。
グループ書き込みアクセスを削除.git
してDevAdminに制限した場合、これが再び発生するのを防ぐことができますか?これは最も簡単なオプションのようです。
.gi
または、新しく作成された場合でも、tグループ内のすべてを書き込み可能にする方法はありますか?これはトラブルからの質問のようです。
私が見逃している明らかな何かが他にありますか?ユーザーが自分のリポジトリで作業できるようにプロセスを変更するのがおそらく最善の方法だと思いますが、ビジネス環境では、リポジトリが非常に大きくなる可能性があります(jarがまだ分離されていない、大量のバイナリファイルなど) ...)、すべてのアカウントにマルチGBリポジトリを設定することはできません。さらに、システム管理者は、それを可能にするためにプロセスを変更する前に、多くの作業を行う必要があります。
どんな考えでもありがたいです。