【问题标题】:Post Commit Hook Not Running提交后挂钩未运行
【发布时间】:2011-07-02 07:55:18
【问题描述】:

我的 post commit 钩子在 git 之后没有运行。如果我只是从终端运行它,我已经验证了该钩子确实有效。钩子里的代码是:

#!/bin/sh
#.git/hooks/post-commit
# An example hook script that is called after a successful
# commit is made.
#
# To enable this hook, rename this file to "post-commit".

perl -pi -e 's/([a-f0-9]+)$/'$( git rev-parse HEAD )/ ../../config/commit.git

我确实在 ./.git/hooks/ 中将文件重命名为 post-commit,权限为 -rwxr-x-r-x,所以我不确定它为什么不起作用。

【问题讨论】:

    标签: git bash github post-commit githooks


    【解决方案1】:

    我将把它留在这里作为答案,因为当 my 提交后挂钩未运行时,我偶然发现了自己的答案:

    chmod +x .git/hooks/post-commit

    可能适用于任何类型的钩子。 事实上,可能适用于任何类型的脚本。

    【讨论】:

    • 这正是我遇到的问题。感谢您将其作为答案。
    • 哦,那些讨厌的权限。我也遇到了确切的问题。谢谢。 :)
    • 也错过了。谢谢!
    • 如果你有权限 777 并且钩子仍然没有运行怎么办? post-checkout 运行,但 post-receive 不运行,当它是完全相同的命令时。它应该在 git pull 上运行。
    • @Darius.V 也许它需要实际接收一些东西而不是“已经是最新的。”?只是一个想法。
    【解决方案2】:

    尝试在 perl 行之前和之后放置一些 echo 行,如下所示:

    echo "post-commit started"
    perl ...........
    echo "post-commit finished"
    

    这样你就可以确认脚本是否真的在运行,因为当你运行时

    git commit
    

    你应该看到

    post-commit started
    post-commit finished
    

    接近你的输出。

    【讨论】:

    • 谢谢。后提交正在运行,但确实有错误。路径应该是 ./ 而不是 ../../.
    • Steven Lu 的权限答案位应添加到此接受的答案中。
    【解决方案3】:

    我的提交后脚本没有被调用,因为:

    我已将脚本命名为 post-commit.sh,而不仅仅是 post-commit

    要启用挂钩脚本,请将文件放在 .git 目录的 hooks 子目录中,该文件具有适当的名称(没有任何扩展名)并且是可执行的。从那时起,它应该被调用。我们将在这里介绍大多数主要的钩子文件名。 See git-scm

    不知道为什么我认为 hooks 需要 bash 文件扩展名。

    我也没有意识到 钩子脚本不能有文件扩展名。例如,

    如果你想使用捆绑的钩子脚本,你必须重命名 他们;它们的文件名都以 .sample 结尾

    希望这对某人有所帮助。

    【讨论】:

    • 我也错过了那部分说明;我刚刚看到but any properly named executable scripts will work fine 并进入了 pre-commit.sh。结束了这个问题,看到了最受欢迎的答案,然后想“是的,我已经这样做了”。然后我注意到了你的回答。谢谢!
    • 这是一个很好的答案!据我所知,在 UNIX 领域,文件扩展名并不重要。这只是 Windows 接受的一个约定。与此相关的大部分混淆可以追溯到 Windows 隐藏这些扩展名的默认行为,即使在 Windows 上,这些扩展名也是文件名和路径的关键部分。
    【解决方案4】:

    除了这里提到的答案,请注意,如果您希望用户在您的钩子中输入,您需要像这样将标准输入重定向到键盘(至少对于 bash 脚本);

    exec < /dev/tty
    

    【讨论】:

      猜你喜欢
      • 2014-08-10
      • 2018-09-29
      • 2014-05-13
      • 1970-01-01
      • 2014-01-03
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      相关资源
      最近更新 更多