2008-10-14 6 views
11

Ich habe ein kleines Projekt, das ich mit einigen anderen auf einer Maschine teilen möchte, auf die wir alle Zugriff haben. Ich habe eine blanke Kopie der lokalen Repo mit"Projektbeschreibungsdatei" Fehler in Git?

git clone --bare --no-hardlinks path/to/.git/ repoToShare.git 

ich dann repoToShare.git auf den Server verschoben.

Ich kann es mit der folgenden Besuche:

git clone ssh://[email protected]/opt/gitroot/repoToShare.git/ test 

ich dann alles in der lokalen Repo sehen und Commits dagegen machen. Wenn ich versuche, Änderungen auf den Remote-Server zu übertragen, erhalte ich den folgenden Fehler.

*** Project description file hasn't been set 
error: hooks/update exited with error code 1 
error: hook declined to update refs/heads/master 

Irgendwelche Ideen?

Antwort

19

Git installiert eine Reihe von vorkonfigurierten Hooks im Hooks-Verzeichnis, die nicht ausgeführt werden. Wenn Sie erlauben, auf ihnen auszuführen (zB chmod + x) dann wird git versuchen, sie auszuführen. Der bestimmte Fehler wird angezeigt, da das Standardupdate nicht ausgeführt werden kann. Um das Problem zu beheben, löschen Sie den Standard-Update-Hook.

Hilft this link? Aus dem Text:

Ein Kollege von mir erfuhr hier ein ähnliches Problem, wo Push nicht Arbeits waren. Sie konnten nicht zu einem lokalen oder einem öffentlichen Remote-Repository wechseln. Er war bekommen eine Projektbeschreibungsdatei wurde nicht Fehler von .git/hooks/update geworfen. Dieser Fehler war nicht passiert für das gleiche Projekt auf einem Linux oder Windows-Box und schien passiert nur unter Windows Vista. Von meine Forschung hooks/update ist nicht von standardmäßig ausgeführt, aber in Windows Vista die Dateiberechtigungen bedeutete, dass es war. Delete of hooks/update behoben diese Probleme.

+1

Das genaue Problem ist, dass, wenn das Hooks/Update-Skript Ausführungsberechtigungen hat, es versuchen und ausführen wird, was bedeutet, dass Ihre Sachen brechen werden. :( –

+1

Git 1.6 sollte dieses Problem beheben, indem Sie die vorinstallierten Hooks ignorieren, bis Sie sie umbenennen. So sollten neuere Git-Benutzer unter Windows dieses Problem nicht mehr sehen, sobald Git 1.6 weit verbreitet ist. – tialaramex

+0

Hatte dies bei mir die Verwendung von 1.6.0.4 in Cygwin Das Löschen der Update-Datei hat es für mich repariert – bradtgmurray

16

Löschen von Hooks/Update ist nicht das, was Sie tun möchten.

Ändern Sie einfach .git/description zu dem, was Sie wollen - zum Beispiel "FOOBAR repository" oder, wenn Sie Französisch sind, "Le depot de FOOBAR".

+0

Ich habe definitiv einige Inhalte in .git/Beschreibung, aber ich bekomme immer noch der Fehler –

+0

Der Inhalt muss sich von dem standardmäßig hinzugefügten Git unterscheiden – takeshin

+2

Ich werde die französische Beschreibung einfügen, obwohl ich die Sprache nicht sprechen kann ... – Rimian

2

ich auch diesen Fehler bekam, wenn sie von Mac OS X (Git Version 1.6.1 kompiliert mit MacPorts) auf einem Ubuntu-Remote-Repository (Git Version 1.5.4.3) schieben

Ich habe den Namen hinzugefügt von Repository in der .git/description Datei auf dem lokalen und dem Remote-Repository und das hat es behoben.

0

Ich hatte das gleiche Problem wie @ dragulesq aber mit einem Red Hat Server.

Um ein wenig ausführlicher zu sein, setzen Sie einfach was Sie wollen als String in die .git/description-Datei auf Ihrem lokalen (in meinem Fall mein Mac OS X); Ich legte Website und dann auf dem Remote-Server, der die Git-Repo (wie so gesprochen) hostet bearbeiten Sie die .git/description-Datei und setzen Sie die gleiche Zeichenfolge erneut (z. B. Website).

1

chmod -x Haken/update

der obige Befehl von Ihrem .git Verzeichnis ausgeführt werden nur Berechtigungen von dem Update Haken ausführen entfernen. Keine Notwendigkeit, die Datei zu löschen

1

Datei löschen oder ihre Ausführung zu verhindern scheinen extreme Lösungen. Wenn Sie keine Projektbeschreibung hinzufügen möchten, reicht es, die Zeilen in hooks/update zu kommentieren oder zu löschen, die die Push-Aktionen blockieren. In meiner Datei sind diese Zeilen:

# check for no description 
projectdesc=$(sed -e '1q' "$GIT_DIR/description") 
if [ -z "$projectdesc" -o "$projectdesc" = "Unnamed repository; edit this file to name it for gitweb." ]; then 
     echo "*** Project description file hasn't been set" >&2 
     exit 1 
fi 

Als ich sie auskommentierte, funktionierte alles gut.