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/directoryfatal: detected dubious ownership in repository