Git post-commit hook作为后台任务

时间:2011-10-27 14:22:20

标签: git shell sh post-commit gitx

我有一个脚本,我需要在git版本控制下提交项目后运行。因此,我在子目录/ hooks中的项目.git目录中创建了一个post-commit钩子,命名为'post-commit',并给出了以下内容:

#!/bin/sh
# I am a post-commit hook
/usr/local/bin/my_script &

my_script是可执行的,在/ bin / sh中运行正常。实际上它有几秒钟的运行时间,所以我希望它是背景和从当前shell分离。这就是为什么我把尾随'&'我的钩子。

现在的问题是'&'似乎被忽略了。当我在OSX Lion下使用gitx 0.7.1时,gitx会在my_script需要运行的时间内挂起。

我尝试了很多,但是没有把过程本身带到后台。

这里有什么问题?

4 个答案:

答案 0 :(得分:14)

以下是它对我有用的方法:

#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &>/dev/null &

答案 1 :(得分:4)

您也可以使用at命令。您可能必须先安装

echo /path/to/your/executable | at now

echo bash /path/to/your/script | at now

有关at(man atthe online version)的更多信息,请参阅at(1)手册页

答案 2 :(得分:2)

尝试使用nohup

#!/bin/sh
# I am a post-commit hook
nohup /usr/local/bin/my_script &

答案 3 :(得分:1)

如果您将#!/bin/sh更改为#!/bin/bash(假设您可以使用bash)并使用nohup,那么您的示例应该有效。