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(최상)
이는 자동화/크론이므로 실행할 사용자 앞에 접두사를 붙이는 것이 더 쉽습니다. 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
- 내 현재 자식 버전은 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