Hatena::ブログ(Diary)

アジャイルSEを目指すブログ

2010-04-05

TortoiseSVNの基本的な使い方 その1

目的

こういうのを書こうとした理由としては、

  • 意外とSVNを知らない人が多い。
  • 既存の解説ページだとTortoiseSVNのバージョンが古い。
  • 日常で使う最低限の機能だけを説明したページが欲しい。
  • 自分の会社の先輩に説明する時のためのまとめ。

と、まぁそんな感じ。

後、実際にTortoiseSVNを使いながら一通りの操作を説明したページが無かったので、書いてみようかなぁと。


SVNの詳細や運用方法などについて詳しく知りたい方は『Subversion実践入門』を読まれると良いですよ。

読んでない方は是非一読すべき良書。

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)

目次

  1. 概要
  2. 準備
    1. TortoiseSVN インストール
    2. TortoiseSVN 日本語化
  3. Hello, Worldを表示するプログラムの作成
    1. プロジェクトの準備
      1. リポジトリの作成
      2. インポート
      3. チェックアウト
    2. "Hello, World"を表示する
      1. 追加
      2. コミット
    3. "Hello, SVN World"に変更する
      1. 差分
      2. ファイル名の変更
      3. ログ
      4. リビジョンを保存

概要

簡単に利点を挙げると、下記のような物がある。

  • ファイルを間違って変更しても、簡単に元に戻すことが出来る。
  • ファイルの変更日時、変更者、変更理由などの履歴が残る。
  • 特定の日時のファイル一式を簡単に取り出すことが出来る。
  • 複数のバージョンでのリリース、バージョン間のマージなどが楽になる。
  • 複数人での作業時、他者に変更を上書きされる事が無くなる。*1

社会人だけでなく、学生でもプログラムを書いたり、レポートを書く際に非常に便利なので使った方が良いと思います。

TortoiseSVNならWord/Excelなどを扱え、差分を見ることも可能です。


その他、詳しい説明は沢山の解説ページがあるため、その辺を参照下さい。

参考ページの例

準備

TortoiseSVN インストール

TortoiseSVN downloads | TortoiseSVNからTortoiseSVNの本体と日本語化パッケージをダウンロードします。

f:id:sinsoku:20100401235315p:image:w500

本体のTortoiseSVN-1.6.7.18415をインストールします。

インストール中...

f:id:sinsoku:20100402003208j:image

インストールが終わったら、再起動を促すメッセージが出ます。作業中のファイルがある場合、保存してから"Yes"をクリックします。

f:id:sinsoku:20100402003209j:image

次にLanguagePack_1.6.7.18415をインストールします。

f:id:sinsoku:20100402003210j:image

TortoiseSVN 日本語化

TortoiseSVNをインスールすると、エクスプローラの右クリックにTortoiseSVNのメニューが追加されます。

f:id:sinsoku:20100402004721j:image:w500

メニューから"Settings"を選択し、"Language"を日本語に変更します。

f:id:sinsoku:20100402004722j:image:w500


Hello, Worldを表示するプログラムの作成

こういう説明のお約束として、"Hello, World"を表示するプログラムをバージョン管理してみます。

プロジェクトの準備

まずはプロジェクトの準備として、リポジトリを作成します。

リポジトリというのは、要はソースの全変更を保存しているフォルダです。

リポジトリ作成

適当に新しいフォルダを作成します。

f:id:sinsoku:20100404212356j:image:w500

このフォルダをリポジトリにします。

f:id:sinsoku:20100404212357j:image:w500

リポジトリに必要なフォルダやファイルが作られます。

f:id:sinsoku:20100404212358j:image:w500

インポート

後の説明で使うので、trunk, branches, tagsフォルダをインポートします。(使い方などは後述します)

まずは、インポート用のフォルダを作り、上記の3フォルダを作ります。

f:id:sinsoku:20100404212359j:image:w500

インポート用のフォルダを右クリックして、このフォルダを先程作成したリポジトリインポートします。

f:id:sinsoku:20100404212400j:image:w500

私の環境だと、リポジトリURLは「file:///C:/SVNSample/repository」になります。

URLは自分の環境に合わせて入力下さい。入力出来たらOKをクリックする。

f:id:sinsoku:20100404212401j:image

これでリポジトリの準備は終わりました。

インポート後のリポジトリの状態はリポジトリブラウザから確認出来ます。

f:id:sinsoku:20100404233225j:image:w500

リポジトリには3つのフォルダが入っています。

f:id:sinsoku:20100404233223j:image:w500

チェックアウト

リポジトリはデータの変更を保管する場所ですので、SVNでは作業するためのワークスペースを別に作る必要があります。

新しくフォルダを作成し、workspaceを作ります。

f:id:sinsoku:20100404215607j:image:w500

workspaceフォルダで右クリックして、チェックアウトを選択します。

f:id:sinsoku:20100404220204j:image:w500

このとき、チェックアウトするURLリポジトリURL+/trunkにします。

私の環境だと、チェックアウトするURLは「file:///C:/SVNSample/repository/trunk」です。

f:id:sinsoku:20100404220630j:image

チェックアウトが終わると、workspaceのフォルダにオーバレイが付きます。

f:id:sinsoku:20100404220905j:image:w500

"Hello, World"を表示する

やっと本題のプログラムを書き始めます。*2

下記のファイルをworkspaceに作ります。

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello, World");
	}
}

このファイルはバージョン管理の対象にまだなっていないため、"?"のオーバレイになっています。

そこで、このファイルを版管理の対象に追加します。

追加

HelloWorld.javaを追加します。

f:id:sinsoku:20100404231839j:image:w500

アイコンオーバレイが"+"に変わります。

f:id:sinsoku:20100404232837j:image:w500


しかし、HelloWorld.javaはまだリポジトリに保存されていません。

追加の後にコミットが必要です。

コミット

コミットとは、ワークスペースの変更をリポジトリに保存する事です。

実際に先程のHelloWorld.javaをコミットしてみます。

f:id:sinsoku:20100404232358j:image:w500

f:id:sinsoku:20100404232355j:image:w500

これでHelloWorld.javaリポジトリに保存されました。

"Hello, SVN World"に変更する

早速ですが、バージョン管理の対象になったファイルを変更してみます。

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("Hello, SVN World");
	}
}

出力する文字を変更してみました。

すると、HelloWorld.javaオーバレイが"!"に変わります。

f:id:sinsoku:20100404234153j:image:w500

差分

変更箇所を確認してみます。

右クリックから差分を選択します。

f:id:sinsoku:20100404234339j:image:w500

変更箇所をGUIで綺麗に見る事が出来ます。

f:id:sinsoku:20100404234335j:image:w500

確認が済んだら、前回と同様にコミットします。

ファイル名の変更

プログラムの機能が変わりましたので、HelloWorld.javaのクラス名を変えてみます。

まずは、ソース内のクラス名を変えます。

public class HelloSVNWorld {
	public static void main(String[] args) {
		System.out.println("Hello, SVN World");
	}
}

次に、ファイル名を変更します。

f:id:sinsoku:20100404235501j:image:w500

ファイル名を変えると、オーバレイが"+"になります。

これは、古い名前のファイルを削除し、新しい名前のファイルを追加しているからです。

この変更もリポジトリにコミットしますが、ここで注意点としてworkspaceフォルダでコミットします。

f:id:sinsoku:20100404235459j:image:w500

変更した項目の欄を見ると、名前の変更の仕組みが分かると思います。

f:id:sinsoku:20100405000056j:image:w500


ログ

ここまでの変更内容のログを表示してみます。

HelloSVNWorld.javaを右クリックし、ログを選択します。

f:id:sinsoku:20100405000646j:image:w500

f:id:sinsoku:20100405000644j:image:w500

ファイル名が変更されても、ちゃんと全部表示されています。

また、ログが多くなってきた場合は、右上の検索から絞り込む事が出来ます。

リビジョンを保存

バージョン管理のメリットとして、過去のファイルを取り出せる事が挙げられます。

実際に、"Hello, World"を表示してた時のソースを保存してみます。


HelloSVNWorld.javaのログで、保存したいリビジョンを選択します。

f:id:sinsoku:20100405003542j:image:w500

任意のフォルダに保存します。

f:id:sinsoku:20100405003541j:image

これで、昔のファイルが取り出せます。

*1:実際は上書きされるケースも稀に起きるが、バージョン管理をしていない時に比べると発生頻度はかなり低くなる

*2:慣れると5分も掛からないでリポジトリの用意は出来ます

ナナシナナシ 2013/02/11 00:38 とてもわかりやすく書かれてましてありがとうございます。

ナナナシナナナシ 2013/07/20 17:44 わかりやすくて良かったです。はじめて運用できるようになりました。
画像豊富なところもうれしいです

konoyonohanakonoyonohana 2014/03/06 14:40 ものすごく理解できました.
自分でも運用できそうです.ありがとうございました.

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証