2 Stimmen

Symlink auf das .git-Verzeichnis kann nicht erstellt werden

Wahrscheinlich ist das eine dumme Frage, aber ich habe die Antwort nicht gefunden. Ich versuche, Pre-Commit-Hooks für mein Git-Projekt so einzurichten, dass die Skripte zusammen mit dem Quellcode versioniert werden können.

Es schien, als ob Symlinks unterstützt werden und der richtige Weg für diese Aufgabe sind. Wenn ich versuche, ln mit irgendetwas im .git-Verzeichnis zu verbinden, erhalte ich die Fehlermeldung "No such file or directory". Gibt es etwas Seltsames an der Art und Weise, wie das .git-Verzeichnis eingerichtet ist? Ich mache das gerade über cygwin unter Windows, falls das relevant ist.

Das Skript, das ich zum Einrichten der Symlinks verwende, sieht zum Beispiel so aus:

#/bin/bash

HOOK_NAMES="pre-commit post-commit"
THIS_SCRIPT_DIR=$(dirname $0)
HOOK_DIR=$THIS_SCRIPT_DIR/../.git/hooks

for hook in $HOOK_NAMES; do
    ln -s -f $THIS_SCRIPT_DIR/git-hooks/$hook $HOOK_DIR/$hook
done

Gracias,

\====

Nachbereitung: Dies scheint ein Problem mit Cygwin zu sein, obwohl ich keine Dokumentation finden konnte, die dies erklärt. Unter Linux und OS X funktioniert es einwandfrei. Cygwin hat Probleme beim Erstellen von Symlinks in einem implizit versteckten Ordner (. vorangestellt). Wenn jemand weiß, warum, werde ich diese Erklärung gerne als Antwort einfügen.

6voto

Phil R Punkte 741

Ich weiß nicht, warum das in Cygwin nicht funktioniert (scheint mir ein Fehler zu sein), aber für den Fall, dass jemand anderes das gleiche Problem hat, konnte ich es umgehen, indem ich den symbolischen Link innerhalb des .git-Ordners erstellt habe. Von der Kommandozeile aus würde man also zum Beispiel in den Ordner .git/hooks gehen:

> cd .git/hooks

Und dann den Link erstellen

> ln -s ../../git-hooks/pre-commit pre-commit

1voto

Eric Redon Punkte 1672

Es scheint, dass Sie versuchen, einen Symlink à Ihr .git/hooks aus dem Repository selbst. Ich glaube nicht, dass dies von Git unterstützt wird, was den Fehler erklären würde, der bei Ihnen auftritt.

Diese Antwort schlägt andere Ansätze vor, von denen die meisten den umgekehrten Weg vorschlagen (mit .git/hooks unter ein Symlink). Vielleicht finden Sie eine, die Ihnen am besten passt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X