使用挂钩在git push上重新启动服务器

时间:2013-01-26 00:53:43

标签: git bash rvm

我正在尝试获取更新后的git挂钩以停止服务器,从更新的存储库中提取更改,然后再次启动服务器。钩子正在运行,但它不断吐出错误。

以下是错误:

remote: RVM is not a function, selecting rubies with 'rvm use ...' will not work.
remote: You need to change your terminal emulator preferences to allow login shell.
...
remote: /home/user/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find thin (>= 0) amongst [] (Gem::LoadError)
...
remote: fatal: Not a git repository: '.'

这是更新后的文件:

#!/bin/sh
PATH=/home/... (the value of "echo $PATH" on the remote server)
rvm use 1.9.3
cd /home/project_directory
thin stop
git pull ../gitdirectory.git
thin start -e production -p 3000 -d

即使用精确的位置替换rvm和thin,即“哪个rvm”,也无法解决错误。

任何人都可以对这里出了什么问题有所了解吗?谢谢!

2 个答案:

答案 0 :(得分:0)

rvm问题众所周知,令人恼火,answered elsewhere.尝试rvm site.上列出的技术至于git错误,看起来像是你的问题只需在错误的目录中发出命令。您是否尝试在服务器上以钩子的用户身份运行它?

答案 1 :(得分:0)

对于rvm use ...,您需要source $HOME/.rvm/scripts/rvm,但这不适用于您在shebang #!/bin/sh中使用的shell。

而是尝试这个脚本:

#!/bin/sh

cd /home/project_directory
source $( $HOME/.rvm/bin/rvm in . do rvm env --path )
thin stop
git pull ../gitdirectory.git
thin start -e production -p 3000 -d