2

これはおそらくばかげたことですが、周りを検索しても答えが見つかりませんでした。スクリプトをソースと一緒にバージョン管理できるように、gitプロジェクトのpre-commitフックを設定しようとしています。

シンボリックリンクがサポートされているようで、そのための方法があります。.gitディレクトリ内の何かでlnを実行しようとすると、「そのようなファイルまたはディレクトリはありません」というエラーが表示されます。.gitディレクトリの設定方法に何か奇妙なことがありますか?これは、適切な場合に備えて、現在Windowsのcygwinを介して行っています。

たとえば、シンボリックリンクの設定に使用しているスクリプトは次のようになります。

#/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

ありがとう、

====

フォローアップ:これはCygwinの問題のようですが、それを説明するドキュメントを見つけることができませんでした。これはLinuxとOSXで正常に機能します。Cygwinでは、暗黙的に隠されたフォルダー(プレフィックス付き)にシンボリックリンクを作成する際に問題が発生します。誰かがなぜ私がその説明を答えとして喜んでタグ付けするのか知っているなら。

4

2 に答える 2

5

これがCygwinで機能しない理由はわかりません(私にはバグのように思えます)が、他の誰かが同じ問題を抱えている場合に備えて、.gitフォルダー内からシンボリックリンクを作成することで回避できました。たとえば、コマンド ラインから .git/hooks フォルダーに移動します。

> cd .git/hooks

そして、リンクを作成します

> ln -s ../../git-hooks/pre-commit pre-commit
于 2016-02-10T18:33:15.427 に答える
1

リポジトリ自体からシンボリックリンクしようとしているようです。.git/hooksこれは、発生しているエラーを説明する Git でサポートされているとは思いません。

この回答は他のアプローチを示唆しており、そのほとんどは別の方法を提案しています(シンボリックリンクを持っ.git/hooks ています)。あなたに最適な1台が見つかるかもしれません。

于 2012-09-28T20:42:11.557 に答える