7

post-merge我的git 存储库中有一个只运行jekyll命令的钩子。

当我运行git pull时,post-merge运行没有问题。

但是,我已经设置了一个 PHP 文件,它将充当远程的 WebHook:

$pull = `cd .. && git pull`;
echo $pull;

当我访问这个文件时, git pull 运行(在一些初始问题之后)并且成功。但是,由于某种原因,post-merge失败了。如果我查看我的 Apache 内部error_log,我会发现以下错误:

.git/hooks/post-merge: line 5: jekyll: command not found

这很奇怪,考虑到post-merge当我git pull通过 SSH 进行手动操作时成功运行了 jekyll。

如果我按照这里的建议运行使用可执行文件的完整路径,我会在我的error_log

/usr/bin/env: ruby_noexec_wrapper: No such file or directory

我通过 RVM 安装了 Ruby。

如何让apache用户运行jekyll没有问题?

编辑:这是我目前的post-merge

#!/bin/sh

unset GIT_DIR

source /usr/local/rvm/environments/ruby-1.9.3-p194

/usr/local/rvm/gems/ruby-1.9.3-p194/bin/jekyll

echo "Deployed!"

当我以apache用户身份运行它时,我现在收到此错误:

安装了 Node.js。

4

3 回答 3

4

我认为这个错误很清楚:

jekyll: command not found

您应该使用jekyll命令的完整路径。

whereis jekyll

然后使用完整路径执行命令,例如:

/usr/local/bin/jekyll --params

这是该ruby_noexec_wrapper问题的解决方案。

/usr/bin/env ruby​​_noexec_wrapper 失败,没有文件或目录

编辑:

Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available

ExecJS 并且找不到 JavaScript 运行时

于 2012-10-24T15:49:36.787 回答
2

因为我使用的是 RVM,所以我必须直接获取它而不是 Ruby。不知道为什么,但它现在正在工作。

post-merge看起来像这样:

#!/bin/bash

unset GIT_DIR

/usr/local/rvm/bin/rvm use 1.9.3

/usr/local/rvm/gems/ruby-1.9.3-p194/bin/jekyll

echo "Deployed!"

不完美 - rvm 回显了很多我不想要的东西,但它确实有效。

于 2013-01-20T22:31:18.937 回答
0

我通过将以下内容添加到我的~/.bash_profile文件中来解决此问题:

source ~/.bashrc

安装rvm程序应该已经添加

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

我在source上面添加了一行,它解决了这些问题。

于 2013-10-11T09:12:07.793 回答