Description: Ubuntu 22.04.1 LTS
Release: 22.04
Ich versuche, einige Git-Befehle unter dem Benutzer auszuführen www-data
, aber es funktioniert nicht.
Zur Fehlerbehebung habe ich versucht, es auszuführen, sudo -u www-data git show
aber es kehrt zurückfatal: detected dubious ownership in repository
Wenn ich renne, sudo -u www-data git diff --shortstat
kommt es zurückwarning: Not a git repository. Use --no-index to compare two paths outside a working tree
Ich habe auch versucht, hinzuzufügensudoers
www-data ALL=(ALL) NOPASSWD: /usr/bin/git show
# and also
www-data ALL=(ALL) NOPASSWD: /usr/bin/git
Es treten immer noch die gleichen Fehler auf. Irgendwelche Ideen, warum? Danke.
Antwort1
Git erfordert, dass der aktuelle Benutzer der Eigentümer der Dateien ist. Es funktioniert nicht, wenn der aktuelle Benutzer ein „Mitglied“ der Gruppe ist
Für .git
Dateien vonuser1:group1
- Git wird keinen Fehler ausgeben, wenn Sie
user1
- Git wird einen Fehler ausgeben, wenn Sie
user2:group1
Lösung 1 (Beste)
Da dies automatisiert/cron ist, ist es einfacher, den Benutzer, unter dem ausgeführt werden soll, einfach als Präfix anzugeben. Geben Sie den Benutzer vor dem Git-Befehl an
sudo -u <user> git ...
Lösung 2
Etwas umständlicher, da Sie jedes Repository zu den user
's hinzufügen müssen .gitconfig
und es gibt hier eine sehr ausführliche Antworthttps://stackoverflow.com/a/73100228/3872647
[safe]
directory = <real path of git repository, symlink won't work here>
Ich hoffe, das ist klar genug. Andernfalls fragen Sie bitte oder kommentieren Sie, und ich werde diese Antwort ändern.
Antwort2
+1 für „git erfordert, dass der aktuelle Benutzer der Eigentümer der Dateien ist“
- Meine aktuelle Git-Version ist 2.43.1 und diese Fehlermeldung ist neu seit ?.?.?
- Das Setzen von safe.directories hat nichts bewirkt
- ein Skript, das ich verwende, beginnt mit
sudo -u www-data bash -c '...'
und ich habe festgestellt, dass tatsächlich mindestens .git und Kinder im Besitz von sein müssenwww-data
Antwort3
Ich habe also herausgefunden, dass der Fehler nicht mehr auftritt, wenn Sie die Datei .gitconfig in Ihrem Benutzerordner bearbeiten (sollte ungefähr so aussehen /home/your_user/.gitconfig
) und Folgendes einfügen:.
[safe]
directory = /path/to/directoryfatal: detected dubious ownership in repository