当从Git钩子调用'gitbook build'时,“path.resolve的参数必须是字符串”

时间:2015-06-15 08:18:16

标签: node.js git gruntjs githooks gitbook

我正在尝试在我的(Gitlab,Debian 7,虚拟专用)服务器上的post-receive Git钩子中运行<Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Rectangle Fill="Red" Grid.Column="1" ... /> <Rectangle Fill="Blue" Grid.Row="1" Grid.ColumnSpan="2" ... /> </Grid>

基本上我想:

  • 将裸存储库签出到临时目录
  • 在该临时目录中运行gitbook build
  • 通过gitbook build
  • 与网站空间同步

rsync脚本运行如下:

post-receive

从服务器的命令行运行这些命令非常有效 从服务器的命令行运行脚本也很有效 但是当从Git钩子调用脚本时,git --work-tree=/home/git/temp-checkout / --git-dir=/home/git/repositories/my/repo.git checkout -f gitbook build /home/git/temp-checkout rsync ... 调用会产生以下错误:

gitbook

搜索该错误消息似乎指向Grunt,但我只是不知道这里发生了什么。我怀疑有关调用/权限的事情,但是用户(在remote: path.js:439 remote: throw new TypeError('Arguments to path.resolve must be strings'); remote: ^ remote: TypeError: Arguments to path.resolve must be strings remote: at Object.posix.resolve (path.js:439:13) remote: at Object.<anonymous> (/usr/lib/node_modules/gitbook-cli/lib/config.js:5:24) remote: at Module._compile (module.js:460:26) remote: at Object.Module._extensions..js (module.js:478:10) remote: at Module.load (module.js:355:32) remote: at Function.Module._load (module.js:310:12) remote: at Module.require (module.js:365:17) remote: at require (module.js:384:17) remote: at Object.<anonymous> (/usr/lib/node_modules/gitbook-cli/bin/gitbook.js:11:14) remote: at Module._compile (module.js:460:26) 两种情况下都不返回whoami用户)和工作目录似乎都没有区别。

但是在任何情况下git在“本地”(即从服务器的命令行)或从Git钩子调用时的行为都不同。

1 个答案:

答案 0 :(得分:0)

进一步的考虑使我走向正确的方向:调用Git钩子具有与在服务器命令行上工作不同的登录上下文。因此,在两个上下文中运行set > some-file都会发现环境变量存在显着差异。

有些实验证明它是

export HOME=/home/git

必须包含在脚本中。很明显gitbook因没有设置环境变量而感到窒息。