Git funktioniert nicht über AFP

Ich habe ein Git-Repository auf meinem Dateiserver, mit dem ich mich über AFP verbinde. Immer wenn ich versuche, eine Git-Operation auf dem gemeinsam genutzten Repository durchzuführen, z. B. das Staging einer Datei, erhalte ich die folgende Fehlermeldung:

fatal: Unable to write new index file

Wenn ich den git-Befehl auf dem Server ausführe, funktioniert es gut, also gibt es etwas über die gemeinsame Nutzung des Repositorys über AFP, das nicht funktioniert.

Ich verwende Mountain Lion sowohl auf dem Server als auch auf dem Client.

AKTUALISIEREN

Ich scheine Schreibrechte für beide .gitund zu haben .git/index:

$ ls -ld .git
drwxr-xr-x  1 david  staff  364 Nov 29 22:38 .git/
$ ls -l .git/index
-rw-r--r--  1 david  staff  2232 Nov 29 21:45 .git/index
$ cp .git/index backup
$ echo change >> .git/index

Ich habe versucht, Berechtigungen rekursiv anzuwenden, .gitwie in einer Antwort unten vorgeschlagen, aber das hat nicht geholfen:

$ chmod -Rv +w .git
$ git add deploy.js 
fatal: Unable to write new index file

Hmm, es sieht so aus, als würde jemand anderes die Datei verwenden index:

$ cp .git/index backup; mv backup .git/index
mv: rename backup to .git/index: Resource busy

Aber fuserund lsofsind keine Hilfe:

$ fuser -fu .git/index
.git/index: 
$ lsof .git/index

Seltsame Problemumgehung: Wenn ich den folgenden Befehl auf dem Server ausführe , kann ich indexüber AFP eine neue Datei auf dem Client schreiben.

$ cp .git/index backup; mv backup .git/index

Ich bin an diesem Punkt völlig verloren; irgendwelche neuen Theorien?

Ich würde vorschlagen, dass git normalerweise (am besten?) Auf Ihrer lokalen Festplatte gespeichert wird. Dann können Sie zur Sicherung auf einen Server klonen - oder ein anderes Repo als Git-Server ausführen.

Antworten (4)

Wir sind wiederholt auf das gleiche Problem gestoßen, insbesondere wenn wir versuchen, XCode 6 zu verwenden. Ich stelle gerade meine Verbindung zu unserem Server auf WebDAV um (Verbindung zu unserem Server über Finder > Gehe zu (Menüleiste) > Mit Server verbinden.. . > https://localnetworkIP/userfolder/ ).

Das funktioniert bei uns (bisher).

UPDATE: Nach ein paar Tagen bemerkte ich ein neues Problem bei der Verwendung von WebDAV: Dateien verschwanden aus der Ansicht im Finder, wodurch XCode/Git dachte, dass die Datei gelöscht wurde. Ein Blick auf den Server zeigte, dass die Dateien noch da waren.

Ich habe dann meinen Verbindungstyp auf SMB geändert. Das hat für mich gut funktioniert: Git stößt nicht mehr auf Dateiberechtigungsfehler und Finder (OSX 10.10 Yosemite) "verliert" keine Dateien.

Der Fehler zeigt an, dass es nicht in schreiben kann.git/index , was normalerweise bedeutet, dass es auch nicht schreiben kann .git.

Stellen Sie sicher, dass Sie die Berechtigung haben, .gitund wenden Sie diese Berechtigungen rekursiv auf den Inhalt des Ordners und der Unterordner sowie neu erstellte Dateien an.

Gute Vermutung, aber ich scheine die Erlaubnis zu haben. Bitte beachten Sie das Update zu meiner Frage.

Ich erhalte dies zeitweise, und die Eingabe von git status auf dem Remote-Host behebt es für mich.

Danke, ich verwende Git nicht mehr über AFP, aber ich werde Ihre Idee das nächste Mal ausprobieren.

Obwohl diese Antwort Ihre Anforderungen möglicherweise nicht erfüllt, funktioniert Mercurial problemlos auf AFP-Volumes .

Ich bin auf das gleiche Problem gestoßen. Git ist mein primäres VCS, aber ich hatte keinen besseren Weg, als in diesem Fall zu Mercurial zu wechseln.

Glücklicherweise war der Umstieg einfach, da sich beide Tools im Rahmen der grundlegenden Nutzung sehr ähnlich sind.