Beim Klonen eines Git-Repository von Linux auf ein Windows-System erhalte ich folgende Fehlermeldung beim Auschecken der Phase:
$ git clone gituser @ serveraddr: /git/git_repo.git git_WA
Klonen in 'git_WA' ...
gituser @ serveraddr's Passwort:
remote: Objekte zählen: 500846, fertig.
Remote: Komprimieren von Objekten: 100% (118676/118676), fertig.
Remote: Insgesamt 500846 (Delta 307739), wiederverwendet 483023 (Delta 291136)
Empfangsobjekte: 100% (500846/500846), 907,54 MiB | 9,04 MiB/s, fertig.
Auflösung von Deltas: 100% (307739/307739), fertig.fehler: Datei konnte nicht erstellt werden RealR ********************************************* **************************************************** **************************************************** **************************************************** ************* validation.xml (Keine solche Datei oder ein solches Verzeichnis)
Dateien auschecken: 100% (441329/441329)
Dateien auschecken: 100% (441329/441329), fertig.
erledigt.
Fall-2: Als nacktes Repo geklont, alle lokal vom nackten Repo ausgecheckt => Gleicher Fehler.
Fall 3: Klonen Sie das Repo direkt in C: \, checkout erfolgreich, kein Fehler.
-> Es scheint ein Problem mit der Beschränkung der Dateinamen/Dateipfade zu geben.
Fall 4: checken Sie die gleichen Dateien aus dem SVN-Repo. Kann an jedem Ort ohne Probleme auschecken. Daher kein Problem von der Fensterseite. (Ja, ich habe Daten in SVN und GIT, ich bin gerade von SVN zu GIT gewechselt).
Daher muss das Problem innerhalb von msysgit liegen, einer Einschränkung der Dateipfadlänge. Kann die Pfadlänge in gitclient/msysgit angepasst werden?
Edit1: Alle Operationen wurden mit TortoiseGIT-Client v1.8.0 und git-bash: git-Version 1.8.0.msysgit.0 ausgeführt.
Edit2: Der aktuelle Befehl wurde beim Klonen hinzugefügt.
Beim Auschecken eines Projekts in ein Windows-Verzeichnis mit einem Basispfad mit 67 (Windows) oder 76 (Cygwin) Zeichen gab es ähnliche Probleme. Längenbegrenzung:
git checkout -f HEAD
error: unable to create file <194-character filepath> (No such file or directory)
fatal: cannot create directory at '<187-character directory path>': No such file
or directory
Ich löste das Problem, indem ich c:\git auscheckte, das mit 6 oder 15 Zeichen die maximale Pfadlänge unter der Windows-Grenze hielt.
Versuchen:
git config --system core.longpaths true
Dadurch können die Dateien auch bei längeren Dateipfaden ausgecheckt werden. Das Problem dabei wäre, wenn Sie versuchen, es zu löschen, da Windows einen Pfad nicht länger als den zulässigen Schwellenwert löschen darf. Die Problemumgehung besteht darin, die Ordner im lokalen Repository umzubenennen, sodass die Gesamtlänge des Pfads verringert wird. Beispielsweise kann ein Pfad mit dem Namen alpha/beta/gamma/universe.txt auf 1/2/3/universe.txt begrenzt werden, sodass seine Länge unter dem Windows-Schwellenwert für die Dateigröße liegt.
Viele Windows-APIs sind auf 260 Zeichen für den Dateinamen beschränkt. Daher kann git keine Dateien mit Namen erstellen, die länger als 260 Symbole sind. Das NTFS-Dateisystem unterstützt tatsächlich längere Namen (32 KB), aber es ist nicht einfach, lange Namen für Programme zuzulassen.
Abhilfemaßnahme 1: Verschieben Sie Ihr Projekt an einen neuen Speicherort, näher zum Festplattenstamm . Vorteil:
Nachteil:
Abhilfemaßnahme 2: Erstellen Sie aus einem Ordner, der näher am Festplattenstamm liegt, einen Junction für Ihren Projektordner und führen Sie git clone aus dem Junctionordner aus. Sie können dies mit dem Befehl mklink
oder Link Shell Extension tun.
Vorteil:
Nachteil:
Der einzige Vorschlag, den ich in Anbetracht eines ähnlichen Problems sah, war:
Problemumgehung: Verwenden Sie http://www.cygwin.com/ .
Oder überprüfen Sie zumindest, ob ein Checkout in einer git-bash-Sitzung von msysgit besser funktioniert.
Update Mai 2015 (2 Jahre später):
Hinweis: Das latest 2.4.1 Fensterfenster schlägt vor :
core.longpaths::
Aktivieren Sie die Unterstützung für lange Pfade (> 260) für integrierte Befehle in Git für Windows.
Dies ist standardmäßig deaktiviert, da lange Pfade von Windows Explorer, cmd.exe und der Git für Windows-Toolkette (msys, bash, tcl, Perl ...) nicht unterstützt werden.
Aktivieren Sie dies nur, wenn Sie wissen, was Sie tun und bereit sind, mit einigen Macken zu leben.
Verwenden Sie Windows PowerShell. Arbeitete für mich.