こんにちは、Sleipnir 開発担当の森本です。
今回は、 分散バージョン管理システムの Mercurial の紹介をしたいと思います。
現在進行中の Sleipnir 3 の開発では Mercurial を使っており、非常に便利で、もはや無いと開発ができないと思うほど役立っています。
バージョン管理システムを使ってなかったり、”分散でない”システムを使っている人はぜひ導入を検討してみて欲しいです。
と言うわけで、分散バージョン管理システムについて、仕組みを簡単に解説します。
分散バージョン管理システムでは、まず作業用フォルダを決めその中にプロジェクトで使うファイルを入れる必要が有ります。
そして、作業が一段落するたびに “Commit” ( DB に差分を送る。この DB を “Repository” と呼びます)コマンドで、差分を変更履歴として積み上げていきます。
Repository に蓄積された差分は “Log” コマンドで簡単に閲覧できます。
タイムマシンのように、作業用フォルダを昔の状態へ戻すこともできます。
さらに”分散”バージョン管理システムなので、他の場所にある Repository との間で “Push”(差分の送信)、”Pull”(差分の受信) することができます。
Repository 間にはサーバー/クライアントの区別は無く、いくつでも “Clone” (複製) することができます。
同時に複数の場所で変更が行われた場合は、パラレルワールドのような”Branch” (分岐した状態) と見なされて、ほぼ自動で”Marge” (統合) することができます。
とりあえず試しに使ってみる程度ならば、上記程度の理解で十分だと思います。
そして、これを実際に開発体制に組み込んだときにどうだったかについて書き出してみました。
○ ファイルの変更履歴がちゃんと残る
・問題が有ったときに昔のファイルが取り出せるので恐れずにコードを修正できる。
・変更履歴が詳細に残っているので、ミスを追跡しやすい。
○ 多人数で作業したときの問題を “スマート” に解決してくれる!
・同じファイルを多人数が編集しても行単位でマージしてくれ、手で修正することは滅多にないので効率的。
○ サーバーが不要
・サーバーと接続されていない環境でもいつもと同じように作業できます。
・ちょっと書類をバージョン管理をしたいだけの時も気軽に使えます。
× 学習コストが高い
・慣れれば問題無いのですが、仕組みが複雑なので最初は戸惑うことが多いです。
△ 周辺環境が未熟
・Subversion 等に比べると対応ソフトが少なかったですが、現在では最低限は揃っています。
△ 日本語ファイル名の文字コードの扱いが微妙
・日本語ファイル名を使わない事で対処しています
という感じで、使い方さえ学べば後は運用で解決できています。
少し長くなってしまいましたので、詳細な操作方法や運用例はまた別の機会ということにして、今回の結論としては、
Mercurial は(gitも) 便利なので一度お試しあれ
というお話でした。
続きを書きました→ 分散バージョン管理システムのすすめ その2