2009-04-18 7 views
0

Ich versuche, meine Website unter Versionskontrolle zu bekommen. Ich arbeite direkt auf dem Server mit ExpanDrive, das MacFUSE verwendet, um die SFTP-Verbindung als ein lokales Volume bereitzustellen, auf das ich mit dem Terminal und anderen lokalen Anwendungen zugreifen kann.Git Commit Berechtigungen Fehler beim Arbeiten auf einem Remote-Host

Wie auch immer, alles glatt geht, bis ich versuche, zu begehen, wenn ich diese Meldung erhalten:

fatal: exec .git/hooks/pre-commit failed. 

Wenn ich versuche, manuell den exec-Befehl auszuführen, sehe ich:

-bash: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: Permission denied 
-bash: exec: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: cannot execute: Unknown error: 0 

I Habe versucht mit meinem SFTP-Client alles unter dem .git-Verzeichnis voll zu geben (; 777) Berechtigungen und immer noch kein Glück. Weiß jemand etwas anderes, das ich versuchen könnte?

Antwort

1

Ich landete eine lokale Entwicklungsumgebung auf meinem Laptop, ich gebe auf, git durch ExpanDrive zu verwenden. Nach etwas mehr Zeit scheint es so, als ob diese Werkzeuge nicht dazu gedacht waren, zusammenzuarbeiten.

3

Indem Sie alles unter den vollen .git-Verzeichnis-Berechtigungen (777) eingeben, haben Sie alle Beispielskripts, die mit Git ausgeliefert werden, in .git/hooks aktiviert, normalerweise mit ihren ausgeführten Bits. Wenn Sie versuchen, commit das jetzt ausführbare Beispiel Vorab-Commit-Skript versucht, ausgeführt, um die Festschreibung als Patch zu formatieren.

Sofern Sie dies nicht versuchen, schlage ich Ihnen chmod/git/hooks/* bis 644 vor, damit die Hook-Skripte nicht ausgeführt werden.

Bearbeiten - Durch das Zurücksetzen der Hook-Berechtigungen gelangen Sie zurück in den Zustand, in dem Sie zuerst das Problem hatten. Als nächstes versuchen Sie das Commit mit dem --no-verify Flag, das den Pre-Commit-Hook umgehen soll (und auch einige kleinere Überprüfungen der Commit-Nachricht). Dies kann eine Problemumgehung sein, aber ich sehe immer noch nicht, warum Sie das anfängliche Problem hatten. Der Code sieht sehr einfach aus - ich sehe nicht, wie er versuchen könnte, diesen Hook auszuführen, wenn er nicht aktiviert ist. Wenn das auf die gleiche Weise fehlschlägt, dann würde ich denken, dass das ExpanDrive/MacFuse-System Berechtigungen nicht ordnungsgemäß verarbeitet (aber das ist ziemlich unwahrscheinlich).

+0

Danke für den Rat, leider sehe ich immer noch den Fehler, nachdem ich dies versucht habe. –

+0

Ich denke, mein Gehirn war schon auf dem Weg zum Flughafen, als meine Finger noch auf der Tastatur waren. Wenn Sie die Berechtigungen zurücksetzen, gelangen Sie nur dorthin zurück, wo Sie ursprünglich das Problem hatten. – Paul

+0

Leider hatte ich sogar Probleme mit --no-verify, jetzt bekomme ich einen Fehler beim Hinzufügen von Dateien in einem neuen Repo. Ich gebe dieses hier auf. –

1

Ich glaube, dass neuere Versionen von git einen anderen Mechanismus als Berechtigungen verwenden, um Hooks zu aktivieren. Wenn Sie also eine aktuelle Version verwenden, entfernen Sie möglicherweise alles aus dem .git/hooks-Verzeichnis (oder verschieben es woanders hin) und sehen, ob das das Problem ist.

0

Ich hatte das gleiche Problem. Ich entwickle und teste auf einem separaten Entwicklungsserver (devserver), während meine IDE (PhpStorm) auf meinem Macbook ist. Ich benutze ExpanDrive um den Webroot des Devservers via SFTP (SSH) auf meinem Mac zu mounten. Als ich versucht habe, Git auf meinem Mac zu benutzen, erhielt ich Fehler über die SHA1-Dateien und andere Dinge.

Ich habe es auf diese Weise gelöst:

ich den .git dir aus dem bereitgestellten Laufwerk in /Volumes/devserver zu einer Stelle in meinem Home-Verzeichnis auf meinem MacBook bewegt habe. Und danach habe ich den alten Standort mit dem neuen Standort .git dir verlinkt. Ich musste ../../Users/jeroen/### verwenden, weil sonst der Link nicht korrekt war.

Beispiel zu bewegen und die Symlink zu machen:

cd /Volumes/devserver 
mkdir -p /Users/$USER/Code/devserver 
mv .git /Users/$USER/Code/devserver/.git 
ln -s ../../Users/$USER/Code/devserver/.git ./git 
git status 

Das erste Mal, wenn Sie den „git“ Befehl verwenden, es könnte eine Weile dauern, weil Git einige Caches neu erstellt.

+0

Auf Mac benutze ich einfach Fuse und Git funktioniert wie ein Charme dort. Auf Windows, auf der anderen Seite habe ich versucht, Expandrive, aber ich bekomme Erlaubnis Fehler. –