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 .git
und 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, .git
wie 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 fuser
und lsof
sind 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?
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, .git
und wenden Sie diese Berechtigungen rekursiv auf den Inhalt des Ordners und der Unterordner sowie neu erstellte Dateien an.
Ich erhalte dies zeitweise, und die Eingabe von git status auf dem Remote-Host behebt es für mich.
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.
mmmmmm