LoginSignup
11
4

More than 1 year has passed since last update.

[git]操作時にdetected dubious ownership in repositoryが発生するようになった

Last updated at Posted at 2022-08-23

初めに

gitのリポジトリを載せてている環境があり、
Ansibleで環境を新しくサーバを構築したところなぜかgitの操作が通らずに失敗するようになった。
問題となっているのがgitだったのでサーバの中に入り確認したところ、
各種操作で以下のエラーが確認された。

$ git pull
fatal: detected dubious ownership in repository at '/xxx/xxx'
To add an exception for this directory, call:

	git config --global --add safe.directory /xxx/xxx

以前同じ建て方をした環境では発生せずに新しく立てた環境のみ発生する事象であった。

原因

gitのバージョンが2.35.2以上でsafe.directoryパラメータの追加に関連する変更が起因だった。
https://git-scm.com/docs/git-config/2.35.2#Documentation/git-config.txt-safedirectory

成功している環境はgitのバージョンが2.32.0だが今回建てた環境は2.37.1でこのバージョンを跨いだため発生した。

なぜバージョンが違うのか後で確認したところアプリに直接関わるphp等のバージョンは固定していたが、
git等直接関わらない部分がインストールの指定の時に固定されていなかったので、
立てた時期の違いによってバージョンが異なってしまった。

対処方法

説明に記載の通りのコマンドを実行すれば解決する。
rootなど予期せぬユーザでgit pullをして新規ファイルの権限がrootで作成されてしまった...
ということがないようにめんどくさがって--systemで設定しない方が無難だと個人的には思う。

対象の環境はAnsibleでの構築かつ該当ユーザはそのリポジトリ一つしか取り扱わなかったので、
以下をAnsible側に追記することで解決。

    - name: add safe directory
      git_config:
        name: safe.directory
        scope: global
        value: '/xxx/xxx' #リポジトリの配置先

gitのコマンド的には--addを使うことで既存の設定に追加する形でパスを追加できるようですが、
Ansible側で分割上複数箇所で設定したい場合は何が正解となるのかは不明。
(--addは既存のパラメータと同じ値が既にあっても追記する挙動のようです)

そのほかの解決はあるか?(要確認)

https://git-scm.com/docs/git-config/2.35.2#Documentation/git-config.txt-safedirectory
By default, Git will refuse to even parse a Git config of a repository owned by someone else

記載を見る限り所有者が他の場合に発生するもののような記載が見当たる。
ただ今回.gitフォルダの権限を確認し所有者で実行していることは確認しているのになぜか発生している。

一応リポジトリを配置している一つ下のディレクトリの所有者がroot:rootであったため、
権限を試しに今回リポジトリを設置するユーザに変更してみたがこれでもNGであった。

特定の開発環境などであれば個別にsafe.directoryを配置すれば良いと思うが、
開発PC等複数のリポジトリを持つ場合はどうするのが正解となるのだろうか(そもそも発生するのか)。

一応*を指定することで全ディレクトリOKができる例がいくつか見つかったので、
開発PCでバージョンを上げて発生するのであれば最悪この対応をするか、
せめてリポジトリがまとめて配置してあるディレクトリは以下を指定するのがよさそうではある。

追記(同日)
手元の環境(macosx)でgitのバージョンを上げてみてgit操作をしてみたがこの事象は発生しなかった。
やはり権限等何かしらの要因がある可能性があるので解決可能ならそちらを解決するのが良いかもしれない。

11
4
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
11
4