0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

vim で fatal: unsafe repository" が出てアップデートできない

Last updated at Posted at 2022-10-17

備忘録なのでちょっと雑です・・・。

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で確認できます。

CLI
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がわかりやすいと思います
フォルダ右クリック→プロパティ→セキュリティタブ→詳細設定→所有者
image.png
image.png
image.png

ここから所有者を変更してもいいのですが、プラグインを何個も導入している場合は大変なのでコマンドを使うと良いと思います。

Windowsにもchmodみたいなコマンドはtakeownとicalosがあります。
あんまり難しくないのであとは調べて頑張ってください...。
(ごめんなさい)

私は以下のコマンドで一括で変更しました。

nvimのプラグインフォルダ内
dir | % { takeown /d Y /r /f $_.BaseName }
# dirコマンドでリポジトリ(プラグインフォルダ)を取得してtakeownで所有者変更してます

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?