備忘録なのでちょっと雑です・・・。
nvimでplug-vimでプラグインのアップデートを試みていたところ以下のようなエラーが発生しアップデートできなかった。
fatal: unsafe repository
エラーが発生した環境
nvim(NVIM v0.9.0-dev-71-gd9a80b8e2)
Windows 10
私の環境ではたまたま上記の組み合わせだったのですが、
上記の組み合わせ以外(Linux、本家vim)でも発生すると思います。
原因
Git for Windows ver2.35.2 で仕様変更された影響らしい。
gitの実行ユーザーとリポジトリのフォルダの所有者が別々だとエラーが出るようになったらしい。
gitのバージョンを確認するにはCLI(コマンドプロンプト等)でgit --version
で確認できます。
git --version
git version 2.36.1.windows.1
ちょっと表記が怪しいですが2.35.2よりも上のバージョンっぽいです。
解決策
主に二つ解決策があります。
以下のように gitの方でこれを許容する設定を追加する方法。
git config --global --add safe.directory [許可したいリポジトリへのパス]
もう一つは Windowsの方でフォルダの所有者をgitの実行ユーザー(今PCを使っているユーザー)に変更する 方法。
どうするのが定石なのでしょうね?これ以外方法は無いのでしょうか...。
git config --globalで一つずつ変更するのは大変なのとあんまり良くない気がしたので、とりあえずフォルダの方の所有者を変えることにしました。
あんまり時間はかけてられないので・・・。
私の場合はnvimのプラグインのフォルダの所有者がAdministratorsになっていたので、実行ユーザーに変更しました。
(vimの方のプラグインフォルダはAdministratorsになってなかったけど...この辺りよくわからないですがたまたまなんでしょうか?)
所有者の確認の方法と
GUIがわかりやすいと思います
フォルダ右クリック→プロパティ→セキュリティタブ→詳細設定→所有者
ここから所有者を変更してもいいのですが、プラグインを何個も導入している場合は大変なのでコマンドを使うと良いと思います。
Windowsにもchmodみたいなコマンドはtakeownとicalosがあります。
あんまり難しくないのであとは調べて頑張ってください...。
(ごめんなさい)
私は以下のコマンドで一括で変更しました。
dir | % { takeown /d Y /r /f $_.BaseName }
# dirコマンドでリポジトリ(プラグインフォルダ)を取得してtakeownで所有者変更してます
参考