最初は、Eclipseのプラグインとして提供されているsvnをインストールしようかと思ったが、基本的な概念を理解するために、コマンドライン版のsvnをインストールした。
まず、svnって何っていう方のために簡単な説明をしよう。
svnとは、バージョン管理システムの一つである。
大人数で一つのシステムを開発する場面では、自分が更新していたファイルが知らぬ間に他の誰かにも更新されていて修正内容が競合してしまったりだとか、システムが致命的なバグで動かなくなった場合に”あの時のあの状態”に戻したいとかいった場面によく出くわす。
これを解決してくれるのがバージョン管理システムである。
つまり、svnとは、システムのチーム開発に役立つツールの一種である。
バージョン管理システムには、svnの他に、CVSというソフトもあるが、svnの方が使い勝手がいいようである。
現在、eclipseではCVSが標準で実装されている。
今後、svnが標準で実装される予定があるらしい。(eclipse恐るべし。。便利すぎる。)
svnのインストール方法、使い方については、ググればいろいろ出てくるので、ここでは、理解するのに苦労した概念について少しだけ書きたい。
svnには、trunk、branches、tagという概念が存在する。これらは、もともとはCVSの名残のようだが、この3つが何なのか概念的に説明しよう。
これらの3つの概念は、物理的には、ディレクトリという形で表現される。
- trunk その名の通り、幹である。trunkとは、メインで開発を進めるためのディレクトリである。普段は、このtrunkにて開発を行うべきである。
- branches その名の通り、枝である。開発の方向性が複数個に分かれる場合に用いる。例 えば、実装パターンAで開発してきたが、Aで本当にうまくいくのかどうか分から なく なってきた。この場合は、パターンAの開発をtrunkで進めつつ、代替案Bを branchesで開発することになる。また、リリース間近になって新規追加案件が出た時などは、trunkでリリースに必要な開発を進めつつ、それとは別に新規追 加案 件をbranches上で開発するといった場合も考えられる。
- tag tagは他の2つとは若干意味合いが違う。tagは”あの時のあの状態”に戻したいと いう要求を叶えるために、ある状態のリソースのスナップショットを保存するため の機能 である。よってtag上で開発を行うのは好ましくない。あくまでも、ある状態 (メジャーリリース、何かの節目など)のコピーを取っておく事が目的である。
と、まあこんな感じである。
ずっと前から試してみたかったsubversionがようやく使えるようになって、今日は大満足だった。
普通なら、会社で使ってるはずだが、うちの会社は何故か未だにエクセルと共用フォルダを使った管理が主流(笑)