我们想制作一些我们可以共享的基本钩子脚本 - 例如预格式化提交消息.Git有通常存储在其下的钩子脚本<project>/.git/hooks/.但是,当人们进行克隆并且它们不受版本控制时,这些脚本不会传播.
有没有一种好方法可以帮助每个人获得正确的钩子脚本?我可以让这些钩子脚本指向我的仓库中的版本控制脚本吗?
有没有办法跟踪git hook的变化?我有三个钩子只出现在我的机器上,而不是当我的其他开发人员拿到时.试图git add不起作用.
这可能是一些愚蠢的事情,但四处寻找我无法找到答案。我正在尝试为我的 git 项目设置预提交挂钩,使脚本可以与源代码一起进行版本控制。
似乎支持符号链接以及实现此目的的方法。当我尝试使用 .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
Run Code Online (Sandbox Code Playgroud)
谢谢,
====
跟进:这似乎是 Cygwin 的一个问题,尽管我找不到解释它的文档。这在 Linux 和 OS X 上运行良好。 Cygwin 在隐式隐藏文件夹(. 前缀)中创建符号链接时遇到问题。如果有人知道为什么我会很乐意将该解释标记为答案。