Wie korrigiere ich die Meldung von „git“, dass „dubioser Besitz im Repository erkannt“ wurde, ohne „safe.directory“ hinzuzufügen, wenn WSL verwendet wird?

Lesezeit: 6 Minuten

Benutzeravatar von Xavi Montero
Xavi Montero

In diesem Zusammenhang habe ich in den letzten Jahren Git verwendet:

  • Host = mein Laptop, Windows.
  • WSL aktiviert
  • Repos leben auf der Linux-Seite.
  • Ich greife sowohl von der Linux- als auch von der Windows-Seite auf sie zu.

Auf die Dateien kann ich unter Linux entweder über zugreifen git-bash so (über die //wsl$/ Teilen):

Greifen Sie über Git Bash auf Linux zu

Oder nativ im WSL-Bash-Terminal:

Greifen Sie über wsl bash auf Linux zu

Diese Zugriffe gehen auf dasselbe Verzeichnis.

Fehler

Jetzt passiert es, wenn ich es tue git status In einem Repo von der Windows-Seite gibt es den Fehler fatal: detected dubious ownership in repository at:

Fehler in git-bash

Während es in WSL-Linux nicht für dasselbe Verzeichnis gilt:

kein Fehler in wsl-bash

Seit wann?

Es ist vorher nicht passiert. Ich benutze dieses Setup seit Jahren. Das fing vor 2 Tagen an.

Tatsächlich habe ich eine neuere Version von installiert git-bash Vor 2 Tagen und ich vermute, dass die Bash-Umgebung dies bedingen könnte.

Ich arbeite mit ungefähr 100 Repos, und ich habe festgestellt, dass sie in allen, die ich ausprobiert habe, fehlschlagen (ungefähr 10 Repos). Erwartungsgemäß wird es diesen 100 Repos passieren.

Keines dieser zuvor funktionierenden, jetzt fehlgeschlagenen Repos wurde also berührt weder Benutzer, weder Berechtigungen haben sich geändert.

Das Mutieren von “gut” zu “schlecht” ist also nicht auf der Dateisystemseite, sondern muss auf der Git-Bash-Seite sein.

Problem

Ich möchte es nicht einfach auf die Whitelist setzen safe.directory. Ich möchte verstehen, was hinter den Kulissen vor sich geht. Warum es heute passiert und nicht vor 3 Tagen. Ich möchte wissen, “was Git erwartet” und sehen, wie ich es korrigieren kann.

Untersuchung bisher

Die Benutzer scheinen Recht zu haben. Von der Linux-Seite:

Linux-IDs

Und von der Windows-Seite passt es auch zur Festplatte und dem id:

Windows-IDs

Frage

Wie kann ich feststellen, welches Eigentum von erwartet wird? git damit es sich nicht beschwert?

  • Andere mögen anderer Meinung sein, aber ich werde sagen, dass dies ein gut organisierter Beitrag ist und Anerkennung für diese Tatsache verdient. Es ist leicht zu scannen und drückt Frustration aus, ohne sich zu beschweren. Gut gemacht

    – Eric Hepperle – CodeSlayer2010

    18. Oktober 2022 um 19:24 Uhr

Tatsächlich habe ich vor 2 Tagen eine neuere Version von git-bash installiert und ich vermute, dass die Bash-Umgebung dies bedingen könnte.

Ihren Angaben zufolge haben Sie eine neue Version von Git für Windows installiert, die Git Bash enthält. Neuere Versionen von Git, beginnend mit 2.35.2 und 2.36, einschließlich Git für Windows, sind strenger in Bezug auf den Besitz von Verzeichnissen: https://github.blog/2022-04-18-highlights-from-git-2-36/#stricter-repository-ownership-checks.

Wenn Sie verwenden git von Git Bash verwenden Sie das Windows-Programm, auch wenn Sie cd zum //wsl$/ montieren. Git für Windows hat keinen speziellen Code, um mit den Berechtigungen des WSL-Mounts umzugehen, daher erhalten Sie den Fehler. Ohne kannst du das nicht reparieren Ändern des Git-Quellcodes.

Eine Alternative könnte sein, zu verwenden wsl git anstatt git wenn in Git Bash, die dann die ausführbare Linux-Datei verwenden würde.

Oder, wie du geschrieben hast, einfach verwenden git config --global safe.directory '*' um diese Sicherheitsfunktion zu umgehen, wenn Sie sich nicht als gefährdet ansehen.

  • Ich verstehe. Verwenden wsl git wird nicht so trivial sein wie meine wsl ist so konfiguriert, dass es in bestimmten Verzeichnissen startet und insgesamt eine CLI für die GUI (z. B. SourceTree) bereitstellt. Ich würde gerne dazu beitragen, den Git-Quellcode zu versuchen, das zu überwinden //wsl$/ indem ich mehr erkunde, aber da ich nicht die Umgebung habe, um Git zu kompilieren, und wir Git auch restriktiver patchen müssen als die üblichen Pull-Requests, habe ich Angst, zu versuchen, einen Beitrag zu leisten und in einem sterilen Beitrag zu enden. .. Irgendwelche Tipps zum Beitragen zum Git-Quellcode ohne zu viel Overhead?

    – Xavi Montero

    25. August 2022 um 14:36 ​​Uhr


  • Ich sehe hier github.com/git/git/blame/… in Zeile 1483, dass der Verantwortliche das Ergebnis von ist setup_git_directory_gently_1() Sein GIT_DIR_INVALID_OWNERSHIP. Darüber hinaus sind die einzigen Stellen, an denen es innerhalb der Funktionen zugewiesen werden kann, die Zeilen 1329 und 1351, und beide Zuweisungen hängen davon ab ensure_valid_ownership()die in Zeile 1144 definiert ist und wiederum von dieser abhängt is_path_owned_by_current_user(). was hier ein Alias ​​ist compat/mingw.h zu is_path_owned_by_current_sid. Müssen wir Git patchen? Oder WSL?

    – Xavi Montero

    25. August 2022 um 14:57 Uhr

  • Ich würde zuerst damit beginnen, ein Problem zu eröffnen github.com/git-for-windows/git/issues, mit einem minimalen Wiedergabegerät, und sehen Sie, was aus der Diskussion herauskommt. Der Betreuer von Git für Windows ist normalerweise sehr hilfreich und sollte in der Lage sein, Sie zu führen.

    – Philb

    25. August 2022 um 15:58 Uhr

  • Vielen Dank! Dies war die Lösung für mein Problem git config --global safe.directory '*'

    – Eric Hepperle – CodeSlayer2010

    18. Oktober 2022 um 19:23 Uhr

  • +1 Schlüsselpunkt in dieser Antwort, der mir geholfen hat: “Neuere Versionen von Git … sind strenger in Bezug auf den Verzeichnisbesitz”. Ich habe einen einfachen Freigabeprozess auf meinem eigenen Server, auf dem der Live-Code einen Benutzerbesitzer hat www-data. Wenn ich eine neue Version vorbereite, muss ich sicherstellen, dass die Dateien in dieser Version mir gehören (indem ich eine chown) dann bekomme ich diesen “dubiosen” Fehler nicht.

    – du weißt schon

    12. November 2022 um 2:14 Uhr

verwenden git config --global safe.directory '*' um die Sicherheitsmaßnahmen zu umgehen

  • ist das nicht bereits in der akzeptierten Antwort?

    – große Badmaus

    1. November 2022 um 10:12 Uhr

  • Ich bin jedoch nicht davon überzeugt, dass es aufgrund von WLS-Änderungen in gIt mehr funktioniert

    – große Badmaus

    1. November 2022 um 10:18 Uhr

  • @bigbadmouse dieser Befehl gut auf meinem wsl

    – Arnold Ighiwiyisi

    2. November 2022 um 16:25 Uhr

  • Damit ist die Frage nicht beantwortet. Sobald Sie über einen ausreichenden Ruf verfügen, können Sie jeden Beitrag kommentieren. stattdessen, Geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern. – Aus Bewertung

    – Hide1nbush

    7. November 2022 um 8:00 Uhr

Unsicher, ob dies für alle gilt, bei denen dieser Fehler unter Windows auftritt.
Ich rannte GitBash als Administrator und der Fehler wurde mir nicht mehr angezeigt, wenn ich “git status” ausführte.
Möglicherweise habe ich das Repository ursprünglich erstellt, während ich Git Bash als Administrator ausgeführt habe. Ich kann mich leider nicht erinnern.

Viel Glück

  • Habe das positiv bewertet, irgendwie aus Verzweiflung 🙂 , hat aber in meinem Fall leider nicht geholfen. (Natürlich habe ich versucht, die Verzeichnisse zuerst zu whitelisten (zunächst einzeln, dann auch mit ‘*’), aber das hat auch nicht funktioniert …)

    – Gr.

    17. Dezember 2022 um 21:27 Uhr

Ich habe dieses Problem festgestellt, nachdem ich den Ordner von einem anderen PC (beide Windows) kopiert habe.

Um dies zu beheben, öffnen Sie die Eigenschaft des Ordners, klicken Sie auf die Registerkarte „Sicherheit“ und die Schaltfläche „Erweitert“. Machen Sie sich im angezeigten Dialogfeld zum Eigentümer.

1440830cookie-checkWie korrigiere ich die Meldung von „git“, dass „dubioser Besitz im Repository erkannt“ wurde, ohne „safe.directory“ hinzuzufügen, wenn WSL verwendet wird?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy