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
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.
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.
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:
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.
12045900cookie-checkGit – Problem mit der Groß-/Kleinschreibung des Ordnersyes