2022-08-07

git で local repo が自分のものじゃないとなったやつ

今日はブログ書くつもり無かったけど、これまた起こったらなんかハマりそうやなーと思ったので、したためた。

何があったかわからんが、 git に local repo の所有権が自分にないと言われてエラーになった。

PS> git status
fatal: detected dubious ownership in repository at 'C:/Users/takatoshi/dev/github.com/krymtkts/Get-GzipContent'
To add an exception for this directory, call:

git config --global --add safe.directory C:\Users\takatoshi\dev\github.com\krymtkts\Get-GzipContent
Set the environment variable GIT_TEST_DEBUG_UNSAFE_DIRECTORIES=true and run
again for more information.

safe.directory が設定されているパスなのだけど。

PS> git config --list | ? {$_ -like 'safe*'}
safe.directory=C:/Users/takatoshi/dev/*

GIT_TEST_DEBUG_UNSAFE_DIRECTORIES でデバッグメッセージを有効化できるそうなのでしてみたところ、以下の様なのが出た。 最近使ってた local repo では出なくて、放置してた 最近ご無沙汰だった repo で出ている。

PS> $env:GIT_TEST_DEBUG_UNSAFE_DIRECTORIES=$true
PS> git status
warning: 'C:/Users/takatoshi/dev/github.com/krymtkts/Get-GzipContent/.git' is owned by:
'S-1-5-32-544'
but the current user is:
'S-1-5-21-3808303910-2770483448-703627078-1001'
fatal: detected dubious ownership in repository at 'C:/Users/takatoshi/dev/github.com/krymtkts/Get-GzipContent'
To add an exception for this directory, call:

git config --global --add safe.directory C:/Users/takatoshi/dev/github.com/krymtkts/Get-GzipContent

owner が違う...なんで owner 変わってしまってたんだろう。ユーザー 1 人しかいないのに。 あーハイハイ、と想像がついたので試したところ、管理者権限でならエラーが出ない。

どうも過去に管理者権限で作成した local repo の所有者が Administrator になってた模様。それが最近の Git for Windows の更新で検知されるようになったんだ。

Windows で所有者を変更する方法を調べてみて、それっぽい手順があったのでそれに倣う。 Windows のこの辺の昨日全然知らないので、どっかのタイミングで調べないといけないな。 Using Takeown.exe Command to Take Ownership of a File or Folder – TheITBros

takeown /F C:\Users\takatoshi\dev\github.com\krymtkts\Get-GzipContent /R
# SUCCESS: The file (or folder): ....
# えげつない量の印字...
PS> git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

イイね。直せた。 他のディレクトリも所有者を変えた。

takeown.exe /f . /r | Out-Null
# えげつない量の印字を無に帰す...

終。