使用 Egit 启动预提交挂钩

Use Egit to launch pre-commit hook

我在 Windows8 上使用 EGit (4.1.1) 使用 Eclipse Mars (4.5.2)。 我尝试使用 GitForWindows 从 eclipse 中启动预提交挂钩。

我开始预提交文件:#!/bin/sh

并为 PATH 变量 GITFORWINDOWS 提供了存储我的 GitForWindows 安装 sh.exe 的 bin 文件夹的路径(C:\Program Files\Git\bin)。

如果我在 GitBash 中执行 git commit,预提交会正确执行,因此如果在暂存文件中检测到某个字符串,则会抛出错误。如果我在 Eclipse 中提交,什么也不会发生。我做错了什么?


编辑

我也用 Cygwin 试过了。虽然它在 cygwin 终端(以及 GitInWindows 终端)上工作,但它在 eclipse 中不工作。

我将 PATH 设置为 C:\cygwin64\bin,其中 sh.exe 是。

第returns行会不会有问题?到目前为止我有LF。

要从 Eclipse (Egit) 中使用 运行 挂钩,您需要执行以下操作:

钩子被实现为需要由“/bin/sh”执行的脚本。

但是在一台普通的 windows 机器上你没有 sh.exe
因此,您需要安装 cygwin 并将 <cygwin_root>/bin 添加到您的 PATH

确保在安装 cygwin 期间您还安装了 git(因为挂钩脚本要执行 git 命令)。

为 Cygwin 设置 PATH 变量最终奏效了。不过我不得不重启电脑。

它仍然不适用于 GitForWindows。这可能是由于 JGit 有一个 FS_Win32_Cygwin class 从 'PATH' 变量中提取到 sh.exe 的路径。 GitForWindows 可能不存在这样的 class(目前)。更多信息 here.

我的EGit版本(4.1.1)好像没有起作用