Git「致命的: リポジトリに疑わしい所有権が検出されました」

Git「致命的: リポジトリに疑わしい所有権が検出されました」
Description:    Ubuntu 22.04.1 LTS
Release:        22.04

ユーザーの下でいくつかの git コマンドを cron しようとしていますwww-dataが、機能しません。

トラブルシューティングのために実行してみましたsudo -u www-data git showが、戻りますfatal: detected dubious ownership in repository

実行するとsudo -u www-data git diff --shortstat返されますwarning: Not a git repository. Use --no-index to compare two paths outside a working tree

私も追加してみましたsudoers

www-data ALL=(ALL) NOPASSWD: /usr/bin/git show

# and also

www-data ALL=(ALL) NOPASSWD: /usr/bin/git

まだ同じエラーが発生します。原因をご存知ですか? ありがとうございます。

答え1

Git では、現在のユーザーがファイルの所有者である必要があります。現在のユーザーがグループの「メンバー」である場合は機能しません。

.git以下のファイルの場合user1:group1

  • Gitはエラーをスローしません。user1
  • Gitはエラーをスローします。user2:group1

解決策 1 (最良)

これは自動化/cronなので、実行するユーザーをプレフィックスする方が簡単です。gitコマンドの前にユーザーを指定します。

sudo -u <user> git ...

解決策2

userすべてのリポジトリをに追加する必要があるため、少し面倒です.gitconfigが、ここに非常に詳細な回答があります。https://stackoverflow.com/a/73100228/3872647

[safe]
    directory = <real path of git repository, symlink won't work here>

これが十分に明確であることを願います。そうでない場合は、質問またはコメントしていただければ、この回答を修正します。

答え2

「git では現在のユーザーがファイルの所有者である必要があります」に +1

  • 私の現在の git バージョンは 2.43.1 ですが、このエラー メッセージは ?.?.? 時点で新しく追加されました。
  • safe.directoriesを設定しても何も起こりませんでした
  • 私が使用しているスクリプトはで始まりsudo -u www-data bash -c '...'、少なくとも.gitと子は所有する必要があることがわかりました。www-data

答え3

そこで、ユーザー フォルダー内の .gitconfig ファイル ( のようなファイル/home/your_user/.gitconfig) を編集して、以下を挿入すると、 エラーが表示されなくなることがわかりました。
[safe]
directory = /path/to/directory

fatal: detected dubious ownership in repository

関連情報