(gitで)勉強用にMTのテンプレートをバージョン管理する

(gitで)勉強用にMTのテンプレートをバージョン管理する

最近、自宅のマシンにMTOSをつっこんで、上記の本を見ながらカスタマイズの方法について触りはじめています。勉強のためのカスタマイズとはいえ、バージョン管理されていないのは不安だったのでgitを使ってバージョン管理をしていました。ところが、テンプレート(公開用)を修正することになり、困りました。MTのテンプレートは通常、データベース内に保存されており、バージョン管理されていません。元に戻すのが気軽にできないのは勉強する上でストレスになるので、バージョン管理する方法を調べていたところ、MTで少し操作するだけでgitやsubversionを使ってバージョン管理ができるようになることがわかりました。本日はその方法をご紹介いたします。

キモは、「テンプレートをファイルへリンク」させること

(この記事ではバージョン管理にgitを使います。参考文献にてTortoiseSVNを使った実例の記事へリンクしています。プロンプト(シェル)に慣れていればgitは、リポジトリの作成が簡単、すでに作成済みの作業ツリーを途中からバージョン管理するのが簡単だと思います。)

さて、バージョン管理するうえで最初に一度だけやる必要があるのが、「テンプレートをファイルへリンク」させることです。(開発環境・実運用環境ともに)そうすれば、次からのワークフローは以下のようになります。

  1. 開発環境にてテンプレートを修正する(修正の単位ごとにコミットする)
  2. 完成したら、テンプレートのフォルダを実運用環境に転送する
  3. 実運用環境で再構築する
  4. おしまい

手順

MTOSをまず、以下のように配置します。


|-- /var/www/cgi-bin
|   `-- mt
|       |-- index.html
|       |-- mt.cgi (その他諸々のmt-*.cgi)
|       |-- php
|       |-- plugins
|       |-- tmpl
|       `-- tools
`-- webroot

配布ファイルを/var/www/cgi-bin/mtに展開したところです。(多くのcgiファイルを省略しています。)テンプレートに手を加える前にここを丸ごとバージョン管理下に置きましょう。


% cd /var/www/cgi-bin/mt
% git init
Initialized empty Git repository in /var/www/cgi-bin/mt/.git/
% git add .
% git commit -m 'initial commit'
[master (root-commit) 782bcb1] initial commit
 3253 files changed, 559952 insertions(+), 0 deletions(-)
 create mode 100644 default_templates/about_this_page.mtml
 create mode 100644 default_templates/archive_index.mtml
 create mode 100644 default_templates/archive_widgets_group.mtml
....(略)

3つのコマンドを実行するだけでバージョン管理下に置くことができました。次にテンプレートをバージョン管理するためのディレクトリを作ります。


% cd /var/www/cgi-bin/mt
% mkdir -p templates/index templates/archive templates/module templates/system
% chmod o+w templates/*

cgi-bin/mt/templatesディレクトリにおくことにしましょう。4つのサブディレクトリは4つのテンプレートの種類に対応しています。次にテンプレートをファイルにはき出します。

管理画面の「デザイン」→「テンプレート」を選択します。ここではインデックステンプレートのメインページをはき出しましょう。編集画面に入って、エディタ領域の下の「テンプレートの設定」をクリックします。以下の画像の通りファイルへのリンクに「../cgi-bin/mt/templates/index/main_index.tpl.html」と指定して保存します。

20091014tanaka_mtos_git01.png

これをテンプレートの数だけ繰り返します。すべてファイルとして出力されたら、またリポジトリにコミットします。コミットする前は作業場所(作業ツリー)の状態は以下のようになっています。


% git status
# On branch master
# Untracked files:
#   (use "git add ..." to include in what will be committed)
#
#       templates/index/main_index.tpl.html
#       templates/index/rsd.tpl.html
# (以下省略)

管理されていないファイルがいくつかあるというメッセージです。あたらしくはき出したテンプレートをリポジトリに記録するには、


% git add .
% git commit -m 'manage templates'

のように実行します。

ここまでくれば、テンプレートの修正作業が、エディタでテンプレートを開いて修正し、動作確認してOKな状態になったらコミットするという流れになります。

テンプレートをバージョン管理するメリット

テンプレートをバージョン管理するとどのようないいことがあるでしょうか。私は「気軽にテンプレート変更を試すことができるようになる」というメリットがあると思います。

テンプレートの変更がうまく行かなかった場合には元に戻したくなるとおもいます。バージョン管理されていない場合、元に戻したくなった場合に備えて古いテンプレートをどこかに保存してから始めることになります。バージョン管理されていればバックアップはすでにありますから、すぐ変更に取りかかれます。面倒くさがって、バックアップをとらずに作業して「もし変更がうまくいかなかったら」というストレスを減らすことができます。

まとめ

テンプレートをバージョン管理することで、勉強をしやすい環境を整えました。

参考文献

Movable Typeのテンプレートをバージョン管理する (ユビキタスニュース)
Movable TypeのテンプレートをTortoiseSVN(Subversion)を使って行う方法。
  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ