我正在尝试在我的(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钩子调用时的行为都不同。
答案 0 :(得分:0)
进一步的考虑使我走向正确的方向:调用Git钩子具有与在服务器命令行上工作不同的登录上下文。因此,在两个上下文中运行set > some-file
都会发现环境变量存在显着差异。
有些实验证明它是
export HOME=/home/git
必须包含在脚本中。很明显gitbook
因没有设置环境变量而感到窒息。