1. Subversionとは
1.1 Subversionとはなにか
SubversionはCVS後継のバージョン管理システムです。システム開発ではソースやドキュメントに修正が入りますが、これらの変更を管理するシステムがバージョン管理システムです。
バージョン管理システムではCVSが有名ですが、CVSではディレクトリの管理ができない・ファイル名の変更ができないなどの欠点がありました。
SubversionはCVSの考え方を元に上記のCVSの欠点を克服したバージョン管理システムであり、オープンソースの開発などで利用されています。
1.2 Subversionを使うメリット
Subversionではリポジトリと呼ばれる場所に指定したファイルを格納します。このとき、ただ格納するのではなく古いファイル新しいファイルの違う部分だけを差分として格納します。
Subversionではファイルをリビジョン番号という番号で管理しています。これを使うことで現在のファイルだけでなく過去のファイルも取り出せる。格納時にコメントを書くことでどのように変更したかの履歴がわかるなどのメリットがあります。
Subversionなどのバージョン管理システムは、システム開発でのソースコードの管理に使われていましたが。このような利点からWebサイトの管理や自分が作成しているドキュメントの管理にも使われています。
もう一つのメリットで一つのファイルを多人数で使うときの管理があります。Subversionでは一つのファイルを複数の人数で使うことを考慮しており、別々の変更が加わった時に便利な処理を行ってくれます。
たとえば、二人で一つのファイルを編集した場合、片一方の変更がもう一方には反映されません。
Subversionではリビジョン番号を見ることで変更が反映されているかいないかをチェックすることができます。チェックして問題が見つかった時はConflict<競合>したといて編集している人に問題が起こったことを知らせます。編集している人のファイルと格納しているファイルを結合<merge>して療法の修正が混じっているファイルを作成します。この作成したファイルを編集することで一貫して修正したファイルをつくることができます。
2.Subversionの使いかた
2.1 Subversionで使う用語
Subversionのようなバージョン管理システムで使う用語を説明します。以後の説明ではこれらの用語を使用するので、よく読んで理解しておいてください。
なお、用語集はLandscape - エンジニアのメモ -- トランクやブランチなどのバージョン管理用語の意味やSubversion - コラム1を参考にしました。
| 用語 | 用語(英語) | 概要 |
|---|---|---|
| リポジトリ | Repository | Subversionにおいて、すべてのファイルと履歴情報を格納しているところです。ファイルなどすべての管理は、リポジトリを中心に行われます。 |
| リビジョン | Revision | ファイルを管理するためにSubversionが付加する番号。この番号を利用することで、ファイルの変更履歴やどこを変更したかのチェックをすることができます。 |
| プロジェクト | Project | マイドキュメントやWebサイトなど管理するファイルをまとめたもののこと。SubversionではProjectごとにフォルダを設定することで一つのリポジトリでプロジェクトを管理できますが、この場合まとめてリビジョン番号が変わってしまいます。 管理を簡単にするならリポジトリは一つで十分ですが、仕事ごとにリビジョン番号を付けたい場合は複数のリポジトリを使い分けるほうが良いみたいです。 |
| URL | URL | Subversionでプロジェクトを指定する書式。この書き方を使うことで、サーバ上のローカルやネットワーク上のPCからの書式の違いがなくなります。 |
| インポート | import | プロジェクトを管理するためにプロジェクト中のファイル群をSubversionに登録すること。Subversionを使うには、まずこれを行う必要があります。 |
| チェックアウト | checkout | Subversionからファイル群を取ってくること。Subversionが管理するためのデータも含まれるので、Subversionでプロジェクトを管理するにはチェックアウトしたプロジェクト中でファイルを編集する必要があります。 |
| ワーキングコピー | working copy | チェックアウトによってSubversionから取り出してきたファイル群。複数のユーザーがおのおの持つことができます。 |
| アップデート | update | 手元のワーキングコピーを更新して最新の状態にすること。複数ユーザーでプロジェクトを運営している場合は、自分が知らないうちに変更されていることがあるのでアップデートを行ってから変更する必要があります。 |
| コミット | commit | 自分の手元でのファイルの変更・追加などを確定し、Subversionに格納すること。コミットをしないといくら修正しても意味はありません。また、意味のない修正でバージョンをむやみに増やすのも考え物。サジ加減は慣れが必要ですね。 |
| トランク,ブランチ,タグ | trunk,branch,tugs | Subversionで最初に登録する時に作成するフォルダ。トランクは現在作成中のもの、ブランチはソフトのバージョンアップ作業中で前のバージョンの保守などのために利用するもの、タグはバージョン1.0をリリースした時のソースすべてなど特定のリビジョンを保存するために利用するもの。プロジェクト一つ事に必ず用意しておくと覚えておくと良いでしょう。 |
| マージ | merge | ブランチ上の変更を現在変更中であるトランクのソースに適用すること。ソフトウェア開発ではデバッグしたソースの適用などに使います。 |
2.2 Subversionを使ってみる
Subversionの基本的な使い方を説明します。なお、簡略化のためリポジトリやサーバーの設定はできているものとしています。
これらについてや詳しい使い方はおいおい説明していきますので、こんな感じに使うんだということを覚えてください。
次のようにして、Subversionを使います。
- プロジェクトを登録する。
まず作成するプロジェクトのフォルダを作成し、その下に管理用フォルダtrunk,branches,tagsを作成します。+-~/work/ +--/projectA +--trunk +--branches +--tagsこの状態で、以下のコマンドを実行します。~/work> svn import projectA svn://atsushifx@agartha://var/svn/projectA -m "initial import." Comitted revision 1. C:\work>
ここで4番目のパラメータsvn://...がプロジェクトを登録するリポジトリを示しています。ここでのリポジトリの書き方はホームページアドレスと同じURLを使用しています。
今回は、サーバagarthaにユーザーatsushifxで登録することを示しています。 - プロジェクトをチェックアウトする。
登録したプロジェクトを編集するためには、まずチェックアウトをする必要があります。
次のようにして、プロジェクトをチェックアウトします。
~/work> cd ~/work2 ~/work2> svn co svn://atsushifx@agartha://var/svn/projectA projectA
これにより、c:\work2下に登録したプロジェクトのファイルが出力されます。+-~/work/ +--/projectA +--trunk +--branches +--tags以後は、こちらのファイルを編集します。 - プロジェクトにファイルを追加する。
~/work2/projectA/trunk/下に以下のファイルを作成します。- hello.txt
Hello.
~/work2> cd projectA\trunk ~/work2/projectA/trunk> svn add hello.txt A hello.txt ~/work2/projectA/trunk> svn commit -m "Add hello.txt" Adding hello.txt Transmitting file data . Committed revision 2. ~work2/projectA/trunk>
これで、Subversionに追加したファイルが登録されます。
以後同様にしてファイルを変更・追加し、svn commitすることで履歴付きでファイルが登録されます。
3. 参考資料
3.1 本
Subversionに関する本をリンクします。
- Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
- Subversionに関する必須知識を網羅した解説書
- 入門Subversion Windows/Linux対応
- Subversionの基礎知識から具体的な使い方までをわかりやすく解説した本。
- バージョン管理システム Subversion解説書
- Subversionマニュアルを元にした解説書。原典。
3.2 Webサイト
Subversionに関するWebサイトをリンクします。
- Wikipedia - Subversion
- WikipediaによるSubversionの説明。辞典での説明みたいなもの。
- Subversionによるバージョン管理
- Subversionのマニュアル。わからないことはここを見ること。
- Subversionの基礎練習
- Windows上でSubversionを使ってファイルを管理する方法を解説しているサイト
- Subversion てんぷらメモ
- Subversionについての説明や使い方。