Git „schwerwiegender Fehler: Zweifelhafte Eigentumsverhältnisse im Repository festgestellt“

Git „schwerwiegender Fehler: Zweifelhafte Eigentumsverhältnisse im Repository festgestellt“
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 showaber es kehrt zurückfatal: detected dubious ownership in repository

Wenn ich renne, sudo -u www-data git diff --shortstatkommt 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 .gitDateien vonuser1:group1

  • Git wird keinen Fehler ausgeben, wenn Sieuser1
  • Git wird einen Fehler ausgeben, wenn Sieuser2: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 .gitconfigund 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/directory

fatal: detected dubious ownership in repository

verwandte Informationen