vscodeのDev container
上のgitにて、fatal: detected dubious ownership in repository at...
といったエラーが出た。
エラー
gitのcommitなどの操作はvscodeとは別のターミナルから行なっていた。commitが終わってもvscodeでの状態が更新されないので、手動で更新をかけたところ、このようなエラーが出ていた:
> git status -z -uall
fatal: detected dubious ownership in repository at '/workspaces/someapp'
To add an exception for this directory, call:
git config --global --add safe.directory /workspaces/someapp
Dev container
上で書いているので、パスはこのような感じになっている。
エラーの文面を見る限り、アクセス権限関連の問題のようだ。関連する問題として、以下を見つけた:
git config
のドキュメントも見てみた:
所有権が異なる.git
を読み取ろうとすると発生するエラーのようだ。
git version 2.38.1
で起こったが、もう少し前の2.35.2
で追加されたセキュリティ機能のようだ。詳しいことはここに書いてある:
上位ディレクトリの所有権が異なる.git
が作成されることによって、下位のgitレポジトリの操作時に意図しないコマンドの実行が引き起こされてしまうのを防ぐための機能とのこと。
エラーメッセージは上記のgitのバージョンアップのcommitでは違うメッセージになっているようだ。
書かれた通りに解決
Dev Containerでの利用はユーザがデフォルトではvscodeに指定されているので、ホスト側のユーザと異なるというのは十分起こり、この状態でホスト側からcommitなどすると起こる問題なんだと思った。なのでエラーのインストラクションの通りにgitのグローバル設定にてsafe.directory
を指定すればOK。
ホスト側ではgitのアップデートもしたが、今のところこのエラーは起きていない。もしホスト側で起きても、同様の設定をホスト側のgitのグローバル設定をすればいいだろう。safe.directory
は複数の値を設定できるとドキュメントにあるので複数で起こっても大丈夫なはず。
悪意のあるユーザが上位のフォルダで.git
を作成できる可能性があるのであればsafe.directory
は使わないでおいたほうがよさそうだ。
以上です。