【问题标题】:Use Egit to launch pre-commit hook使用 Egit 启动预提交钩子
【发布时间】:2016-04-22 11:27:25
【问题描述】:

我在 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\binsh.exe 所在的位置。

换行会是个问题吗?到目前为止,我有 LF。

【问题讨论】:

  • EGit 和 JGit 从 4.2 开始支持(一些)钩子。见这里:bugs.eclipse.org/bugs/show_bug.cgi?id=299315
  • 在您提出的副本中,我没有找到解决问题的方法!它只提到 git 钩子现在在 EGit 中实现并且应该可以工作。
  • 正如我在上面的评论中所说:EGit 4.1 还不支持钩子。如果您在答案中点击bug 299315 的链接,您会看到 EGit 4.2 对钩子有一些支持。但是您使用的是 EGit 4.1

标签: eclipse git egit githooks pre-commit-hook


【解决方案1】:

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

Hooks 以脚本的形式实现,需要由“/bin/sh”执行。

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

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

【讨论】:

  • this answer GitForWindows 被命名为 Cygwin 的替代品。他们两个有什么区别?我也在 GitForWindows 中找到了一个 sh.exe
  • 从版本 2 开始,有一个新的 windows 客户端名称 GitForWindows,它是一个替代的 git windows 客户端。它有一些特殊的 windows 代码,可以在这里找到:github.com/git-for-windows
  • 我想使用 GitForWindows 而不是 Cygwin,因为它已经安装了。如果它是一个等效的替代方案,我应该能够将它用于挂钩,将PATH 变量设置为它的sh.exe。还是不行。
【解决方案2】:

最终为 Cygwin 设置了 PATH 变量。不过我不得不重新启动计算机。

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

我的 EGit 版本 (4.1.1) 似乎不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 2017-02-08
    • 2016-09-02
    • 2012-12-22
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    相关资源
    最近更新 更多