这可能是愚蠢的事,但在我周围搜索我却找不到答案。 我正在尝试为我的git项目设置预提交挂钩,以便脚本可以与源一起进行版本化。
似乎支持符号链接以及实现此目的的方法。当我尝试使用.git目录中的任何内容时,我收到错误“没有这样的文件或目录”。关于.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和OS X上运行良好.Cygwin在隐式隐藏文件夹(.prefixed)中创建符号链接时遇到问题。如果有人知道为什么我会高兴地将这个解释标记为答案。
答案 0 :(得分:3)
我不知道为什么这在Cygwin中不起作用(对我来说似乎是个错误)但是如果其他人有同样的问题,我可以通过创建符号链接来解决它在.git文件夹中。因此,例如,从命令行,您将转到.git / hooks文件夹:
> cd .git/hooks
然后创建链接
> ln -s ../../git-hooks/pre-commit pre-commit
答案 1 :(得分:1)
您似乎正在尝试从存储库本身将符号链接到您的.git/hooks
。我不认为Git会支持这一点,这可以解释您遇到的错误。
This answer提出了其他方法,其中大部分建议采用其他方式(让.git/hooks
符号链接)。你可能会找到一个最适合你的。