Rolf B: GIT unter Windows bei case sensitive Dateien

Hallo alle,

ich habe ein Problem mit dem Git-Repository von src.selfhtml.org: Da sind vier Dateien, die aus Sicht eines case-insensitive Dateisystems doppelt existieren. Also, beispielsweise: Foo.txt und foo.txt. Dedlfix und ich konnten das bisher im Dialog nicht lösen, aber ich habe seitdem etwas am Netz gezupft.

Wenn ich das Repository stumpf clone, führt die Existenz von Foo.txt und foo.txt dazu, dass mir GIT STATUS die Datei Foo.txt als modified anzeigt. Das kann man beim Stagen zwar ignorieren, es ist aber ärgerlich.

Nun habe ich entdeckt, dass Windows im Rahmen von WSL (Windows Subsystem for Linux) die Option bekommen hat, ein Verzeichnis case-sensitive zu machen. Heißt: Man muss dieses Windows Feature aktivieren. WSL in Betrieb zu nehmen sollte nicht nötig sein - zumindest kann Windows nach Setzen des Schalters ordentlich zwischen foo.txt und Foo.txt unterscheiden.

fsutil file setcasesensitiveinfo D:/Projekte/SelfhtmlGit enable

Ordner, die danach in diesem Verzeichnis angelegt werden, erben dieses Flag. Nun noch GIT darüber belehren, um Missverständnisse zu vermeiden:

git config core.ignorecase false

Das habe ich sicherhalber vor dem Clone gemacht, auf globaler Ebene, denn das Flag ist zwar Default, aber ich wollte sichergehen und ich kann's ja nicht in die .git/config Datei hineineditieren, während der das Repository cloned. Eigentlich sollte git clone das auch per Probing feststellen, sagt die Doku, und das ist auch so. Wenn ich den fsutil-Befehl nicht verwende (bzw einen Zielordner nehme, für den case-sensitivity nicht gilt), schreibt er [core] ignorecase = true in die config-Datei.

Dann habe ich das Repository nach D:\Projekte\SelfhtmlGit geklont - und die vier Dateien sind immer noch sofort nach dem Clone modified. Ich habe sie separat über den Browser vom Server abgerufen - der Inhalt des Git-Checkout ist korrekt, und die Dateien stehen auch so da, wie sie sollten. Trotzdem meldet git status sie als modified.

Das ist git 2.32.0 - neuer gibt's nicht unter Windows.

Mach ich noch was falsch? Ich hab's mal als Bug eingetütet, da steht auch wie man es minimalistisch reproduziert, ohn das Self-Repo. Wäre schön, wenn jemand schafft, das zu reproduzieren.

Rolf

--
sumpsi - posui - obstruxi
  1. Das ist zwar keine direkte Antwort auf deine Frage, aber aus Erfahrung würde ich die Dateien umbenennen damit diese immer eindeutig sind. foo.txt ist kein sinnvoller Dateiname, daran ändert sich nichts wenn man ihn groß schreibt. Es besteht zudem auch durchaus Verwirrungspotential wenn du die Dateien später auf einen Linux Webserver schiebst. Genau so gut kann es auch passieren dass sich Dateien überschreiben wenn du diese von einem Linux System auscheckst, da Foo.txt und foo.txt unter Windows die gleiche Datei ist.

    --
    I like 2 Code
    1. Hallo Manuel,

      ich weiß, dass die Benennung keine good practice ist, und best practice schon gar nicht. Im konkreten Fall waren die Dateien auch inhaltlich Duplikate und wir haben sie entsorgt.

      Trotzdem ist war das Repository in diesem Zustand und man sollte erwarten, dass Git damit klar kommt, wenn der Folder case sensitive eingestellt ist.

      Rolf

      --
      sumpsi - posui - obstruxi