基本的に1人でプログラミングをすることがほとんどなんだけど、古くからバージョン管理システムを使っている。これまで、RCS → CVS → Subversion → Git。と乗り換えてきたわけだけど、バージョン管理システムの乗り換えって、なかなか腰が重い。

RCS → CVSの時は、会社がチーム開発体制となって必要に駆られたため、この時はスムースに移行できた。

しかし、CVS → Subversionの時は、やろう、やろうと思いつつ実際に移行したのは2年以上経ってから。CVSに慣れてしまっていたし、多少の不満はあっても必要な機能は満たしていたので移行する必要が感じられなかった。それに進行中のプロジェクトを動かすのは面倒だし。しかし使ってたGUIクライアントのバージョンアップが滞ってきたりしたりので思い切って移行した。(その時のブログ記事

そして今度はGitの時代。でもこれはもはや1人プログラマにはオーバースペックというイメージがあった。しかし最近ではgitコマンドでソースをダウンロードすることも多いので自分のPCにgitは普通にインストールされている。あと、Herokuにいつでもデプロイできるようにしておきたいってのもある。決定的だったのはMacPortsをupgradeしたらSubversionが1.7に上がって、Emacsのdsvnが使えなくなったこと。そんなこんなでやっとGitを使う決意をしたのであった。

導入方法、Subversionからの移行に当たっての注意点でも書こうかと思ったけど、全く違和感なく使えてしまったので参考にしたサイトのリンクだけ。

リモートリポジトリと言っても、別途ポートを開けたり、WebDAVを設定したりしなくてもSSHさえ使えれば良いといのはかなり手軽。

Subversionとの大きな違いとしては、commitはローカルリポジトリに対して行う。で、最終的にリモートリポジトリにpushして同期する。このあたりは理解してから使い始めたほうがよさそう。

リポジトリが分散できるというのは面白くて、分散開発以外での活用方法もありそう。活用例の代表はHerokuでしょう。デプロイ先のサーバにリポジトリを作っておいて、そこにpushすることでデプロイできるという…。Webページの管理などにも使えそう。

クライアントはCUIで使いこなせたほうがいいとは思うが、完成度の高いGUIがあれば無視できない。視覚的に変更が把握できたり、複数ファイルを選択したりするのには便利なので。Macでは今のところSourceTreeというのが良い感じっぽいのでこれを使っている。(AppStoreで期間限定無料になってた)

trunk (Git)