[sphinx] Tinkererを使ってbitbucketでblogはじめました

Tinkerer はSphinxを利用して作られたblogツールです。Sphinxを使っていますのでreStructuredText形式で書くことができます。また、blockdiagをはじめとするSphinxの豊富な拡張機能を使うことができます。

今回はtinkererで作成したblogをbitbucketでホスティングしてみます。

bitbucketでのホスティング

bitbucketでは <username>.bitbucket.org という名前のレポジトリを作成し、そこにindex.htmlファイルを置くことでwebページのホスティングができます。これは普通のレポジトリですので、push/pullできますし、履歴管理も出来ます。

そして、実はこのレポジトリはprivateでも構わないのです。privateにすることで、draftなどを隠すことができます。あ、githubと違ってbitbucketはprivateレポジトリが作りたい放題です。

tinkererを実行

さて、実際にblogを書いてみましょう。

その前に、bitbucketで以下のレポジトリを作成します

  • <username>.bitbucket.org (private レポジトリ)

あとはtinkererを実行します

% mkdir blog
% cd blog
% tinker -s  ## ファイルができる
% vi conf.py
(タイトルなどを設定する)
% tinker -p "first post"
(投稿する)
% vi 2012/01/04/first_post.rst
(適当に書く)
% tinker -b   ## build

これでblog/html以下にhtmlファイルが生成されます。

次に普通にレポジトリを作成しましょう。

% hg init
% vi .hg/hgrc

  [paths]
  default=ssh://hg@bitbucket.org/<username>/<username>.bitbucket.org

% hg add .
% hg commit -m "first post"
% hg push

これで <username>.bitbucket.org でtinkererによるblogが出来ました。 http://<username>.bitbucket.org にアクセスしてみてください。

あとは

  • % tinker -p "なにか"

でページを作成・編集してから

  • % tinker -b

でhtmlを生成し、add、commit、pushをすれば更新できます。また、

  • % tinker -d "draft"

でdraftsディレクトリ以下に下書きを作成することも出来ます。

注意点

bitbucketによるホスティングではindexは禁止されているのでdrafts以下は見えません。privateレポジトリなのでレポジトリに他の人がアクセスすることもできません。しかし、直接URLを指定することでファイルの取得ができてしまいます。

そのため、例えばconf.pyなどはほぼ公開と同じようになってしまいます。また、drafts以下のファイルもファイル名が分かってしまうと取得できてしまいます。

実例とbitbucketの注意点

というわけで、英語ブログをはじめました。

http://rrudi.bitbucket.org

ぼくの普段使っているbitbucketのアカウントはr_rudiなのですが、ホスティングする際にこのアンダースコアが問題になってしまいました。URL的にだめみたいです。twitterに投稿しようとしてできなくて悩みました。アンダースコアはRFC 2396ではOKなような気がするのですが、あんまり詳しく調べていません。

追記

blog/html/index.html へのリダイレクトですが、tinker -s で初期設定をtinkererが吐き出した時に一緒にトップディレクトリにblog/html/index.html へのリダイレクトを行うindex.htmlが吐き出されます。

追記その2

conf.pyとかはダウンロードできちゃうよ、って書きましたけど、よく考えればブランチを切ればいいんでした。

  • default * 公開用ブランチ。index.htmlとblog以下だけ含まれている

  • drafts * 書き用ブランチ。その他のが全部含まれている。

としておいて、普段はdraftsブランチで書いておいて、公開する時にmergeすればいいんですね。

Comments

comments powered by Disqus