Description: Ubuntu 22.04.1 LTS
Release: 22.04
我正在尝试以用户身份执行一些 git 命令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
- 如果你
user1
- 如果你
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
+1 表示“git 要求当前用户是文件的所有者”
- 我当前的 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