gitbook build
(Gitlab、Debian 7、仮想プライベート) サーバーの受信後 Git フック内で実行しようとしています。
基本的に私はしたい:
- ベアリポジトリを一時ディレクトリにチェックアウトします
gitbook build
その一時ディレクトリで実行します- を通じてウェブスペースと同期する
rsync
post-receive
スクリプトは次のように実行されます。
git --work-tree=/home/git/temp-checkout /
--git-dir=/home/git/repositories/my/repo.git checkout -f
gitbook build /home/git/temp-checkout
rsync ...
サーバーのコマンドラインからこれらのコマンドを実行すると、完全に機能します。
サーバーのコマンドラインからスクリプトを実行してもうまくいきます。
しかし、スクリプトが Git フックから呼び出されると、gitbook
呼び出しによって次のエラーが発生します。
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)
そのエラー メッセージを検索すると、Grunt を指しているように見えますが、ここで何が起こっているのかわかりません。呼び出し/許可について何かを疑っていましたが、ユーザー (どちらの場合もユーザーをwhoami
返しgit
ます) も作業ディレクトリも違いを生んでいないようです。
gitbook
ただし、 「ローカルに」(つまり、サーバーのコマンド ラインから) または Git フックから呼び出された場合は、いずれにしても動作が異なります。