Git – Problem mit der Groß-/Kleinschreibung des Ordners

Lesezeit: 3 Minuten

Ich versuche schon einen zu bringen vorhandene Codebasis in version control System wie git.

Ich stehe vor einem bestimmten Problem, bei dem Codebase zwei Ordner mit demselben Namen, aber unterschiedlicher Groß-/Kleinschreibung wie „Form“ und „Form“ enthält.

Hier ist das Szenario: Angenommen, wir haben drei System Linux (Groß-/Kleinschreibung beachtendes Dateisystem), MAC (Groß-/Kleinschreibung nicht beachten) und WINDOWS (Groß-/Kleinschreibung nicht beachten)

Wenn jetzt jemand unter LINUX einen Ordnernamen erstellt FORM Dateien haben a.php , b.php , c.php und einen anderen Ordnernamen form Dateien haben a.php , b.php , d.php und schiebt es in das Remote-Repo

Wenn nun ein Benutzer auf MAC oder WINDOWS das Repo klont, wie verhält sich git bei der Handhabung FORM und form kommt von remote, da bei MAC und WINDOWS die Groß-/Kleinschreibung nicht beachtet wird

Benutzer-Avatar
Jayan

Sie müssen die Dateinamen wirklich korrigieren. Es kann nützlich sein, es zu verwenden

git config core.ignorecase false

Nur für den Fall, dass Sie die Umgebung mischen möchten. Weitere Informationen finden Sie unter Wie übertrage ich Dateinamenänderungen in Git, bei denen nur die Groß-/Kleinschreibung beachtet wird?

Sie sollten Ihre Ordner so umbenennen, dass zwei gleichgeordnete Ordner niemals identisch sind (mit Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung). Dadurch wird Ihre Codebasis portabler und weniger fehleranfällig, da Entwickler nicht einen Ordner mit dem anderen verwechseln.

wie verhält sich git beim Umgang mit FORM und Form, die von remote kommen, da MAC und WINDOWS die Groß- und Kleinschreibung nicht beachten

Besser seit Git 2.17 (Q2 2018), da Git diese Ordner mit unterschiedlicher Groß-/Kleinschreibung in allen Instanzen verfolgt.

Vor einem “git add“-Dateien im selben Verzeichnis, aber mit unterschiedlicher Schreibweise des Verzeichnispfads in einem Dateisystem, bei dem die Groß-/Kleinschreibung nicht beachtet wird, beschädigte die Name-Hash-Datenstruktur und führte zu unerwarteten Ergebnissen.

Sehen c95525e übergeben (08.02.2018) von Ben Peart (benpeart).
(Zusammengeführt von Junio ​​C. Hamano — gitster in übertrage 2ac76d827.02.2018)

name-hash: Verzeichnisnamen richtig einklappen adjust_dirname_case()

Korrigieren Sie die Zeigerarithmetik in adjust_dirname_case() damit es ruft
find_dir_entry() mit der richtigen Saitenlänge.

Vorbei an “dir1/foo” würde eine Länge von 6 statt der korrekten 4 übergeben.
Daraus resultierte find_dir_entry() findet den Eintrag nie und so das Folgende memcpy das würde den Namen auf die Version mit der korrekten Groß-/Kleinschreibung nie ausführen klappen.

Benutzer-Avatar
CodeWizard

Ich stehe vor einem bestimmten Problem, bei dem Codebase zwei Ordner mit demselben Namen, aber unterschiedlicher Groß-/Kleinschreibung wie „Form“ und „Form“ enthält.

Git ist ein Unix-basierter Code. Es wird zwischen Groß- und Kleinschreibung unterschieden, sodass Sie in verschiedenen Fällen denselben Namen verwenden können, und da Sie davon ausgehen, dass Windows dies nicht toleriert.

Es gibt nichts, was Sie dagegen tun können, außer Ihre Ordner umzubenennen.


Dieses Problem hat sogar einen Sicherheitsfehler in Git ausgelöst, der es Ihnen ermöglichte, Ordner wie zu speichern:

.GIT
.GIt

http://git-blame.blogspot.com.es/2014/12/git-1856-195-205-214-and-221-and.html

Sie können sich verpflichten und zur Kasse gehen .Git/<anything> (oder alle Permutationen von Fällen .[gG][iI][tT]außer .git alles in Kleinbuchstaben).

Dies überschreibt jedoch die entsprechende .git/ auf Dateisystemen, bei denen die Groß-/Kleinschreibung nicht beachtet wird (z. B. Windows und Mac OS X). Im Moment können Sie nichts dagegen tun und Sie müssen verschiedene Ordner haben.

1204590cookie-checkGit – Problem mit der Groß-/Kleinschreibung des Ordners

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

Privacy policy