jekylog

All doggs wanna be a Geek

Githubでgh-pagesを作成する

ちなみにプロジェクトのコードとPRページを同一のファイルで管理するのが前提条件。 ここが参考になった。

今までやってた方法

リポジトリ作ったらmaster派生のブランチ、gh-pagesを作っておく。 普段はgh-pagesブランチで作業して更新の度にmasterにgh-pagesをmergeしてpush。 初心者の自分から見てもキモいやり方だと思う。

$ git add .
$ git commit -m '---'
$ git push origin gh-pages
$ git checkout master
$ git merge gh-pages
$ git push origin master

そもそもgh-pagesで作業してからmasterに反映とかなんか違う。 developとかなら分からんでもないけど。

rebaseを使う

普段はmasterで作業してgh-pagesに修正を反映してpush。 うん、さっきよりはいい。

$ git add .
$ git commit -m '---'
$ git push origin master
$ git checkout gh-pages
$ git rebase master
$ git push origin gh-pages

ただ毎回切り替えてrebase、pushするのがメンドイ。

上記の一部ワークフローを自動化

Paul Irish様の提案らしい。 まずは下記参考サイトを元に.git/hooks/post-commitにファイルを設置。

するとさっきまでの煩わしいコマンドが下記のように。

$ git add .
$ git commit -m '---'
$ git push --all

ってgh-pagesが更新されてねー!!!!!!

ということで現在も調査中。

Windows環境ではcommit後にちゃんと実行されてた。
なぜMacだとダメなんだろうか。
環境変数辺りだろうか。

結果から言うとpost-commitパーミッションが755になっていなかったのが原因だった。 まずはpost-commitのパーミッションを確認してみる。

$ ls -l /path/to/post-commit
rw-r--r--  1 username  staff  209  4 20 15:48 /path/to/post-commit

このrw-r--r--ってのが644ってのがあたるので読み書きは可能だけど実行出来ない。 実行可能にするためにsudoでパーミッションを実行可能な755に変更してやる。

$ sudo chmod 755 /path/to/post-commit # chmodは「change mode」の略でファイルやディレクトリのアクセス権を変更するコマンド

これで無事完成!

Fork me on GitHub