2005/10/7
TortoiseSVN 1.2.4

TortoiseSVNの使い方

ページ内索引
バージョン管理の流れ
コピー・修正・マージモデル
ロック・修正・ロック解除モデル
TortoiseSVNによる操作
リポジトリの作成
インポート
チェックアウト
編集
編集内容の確認
コミット
衝突
更新
ロックを取得
ロックを開放
TortoiseSVNのインストールと設定」までで TortoiseSVNを使う準備ができました。
このページでは実際にTortoiseSVNを用いてバージョン管理システムを実際に使っていきます。

バージョン管理の流れ

バージョン管理システムでソースやドキュメント類を管理するに当たっての 大まかな流れとしては以下の二通りが考えられます。

コピー・修正・マージモデル

コピー・修正・マージの手法では、複数のユーザーが平行してソースやドキュメントを 修正できます。
同時に修正できるため、他のユーザーと修正部分が重なる場合もあります。
この場合、ユーザーが手動で衝突部分を編集し、「衝突」を解消する必要があります。
この手法だと衝突だらけになるのではと思うかもしれませんが、リポジトリ利用者の間で ちょっとコミュニケーションをとっていれば、そんなに衝突だらけにならないものです。
ただ、バイナリファイルなどは衝突部分の修正は実際不可能なので、適用は難しいと思います。
  1. リポジトリより最新のソースやドキュメントをローカルPCにダウンロードする (SVN更新)
  2. ローカルPC上でソースやドキュメントを編集する
  3. ローカルPCでの編集をリポジトリに反映する (SVNコミット)

ロック・修正・ロック解除モデル

コピー・修正・マージモデルよりも分かりやすいと思いますが、編集する人がロックを取得して編集し、 編集し終わったらコミットしてロックを開放すると言うやり方です。もちろんロックされている間、他の人は そのファイルをコミットできません。この点で時間的ロスが発生してしまいますが、マージ処理が できないバイナリのファイルに対しては、この手法は有効です。
  1. リポジトリより最新のソースやドキュメントをローカルPCにダウンロードする (SVN更新)
  2. ソースやドキュメントをロックする (ロックを取得)
  3. ローカルPC上でソースやドキュメントを編集する
  4. ローカルPCでの編集をリポジトリに反映する (SVNコミット)
    ※同時にロックも開放されます。

TortoiseSVNによる操作

TortoiseSVN はエクスプローラーの右クリックメニューで動作します。
また、アイコンオーバーレイ機能により、ファイルやディレクトリの状態が一目でわかります。
TortoiseSVNチェックアウト
TortoiseSVNメニュー
通常時 TortoiseSVNチェックアウト
編集後 TortoiseSVNチェックアウト
追加後 TortoiseSVNチェックアウト
ロック後 TortoiseSVNチェックアウト
衝突時 TortoiseSVNチェックアウト

アイコンオーバーレイ機能
TortoiseSVNの使い方についてです。

リポジトリの作成

既にSubversionサーバーを構築している方には必要ないですが、TortoiseSVNではリポジトリを作成することもできます。 複数人で使用する場合にはTortoiseSVNで作ったリポジトリを使用するには不安を感じますが、個人で使用するローカルリポジトリ として使用するには十分です。

リポジトリを作るには、まずリポジトリとするディレクトリを作成し、そのディレクトリを選択して右クリックメニューから [ここにリポジトリを作成]を実行します。

リポジトリの作成
リポジトリの作成
次にリポジトリの種類を選択します。選択できるのはBerkeley DBとNative FileSystemで、 両者には一長一短があります。
一般的にBerkley DBの方が壊れやすいとも言われています。また、TortoiseSVNから作成したリポジトリを ネットワーク越しに利用する場合は、Berkley DBのリポジトリは推奨されていません。
ここではNative FileSystemでリポジトリを作成しました。
リポジトリの形式を選択
リポジトリの形式を選択

インポート

バージョン管理下にないファイルやフォルダをバージョン管理の対象にするには、リポジトリへの[インポート]を行います。 バージョン管理下に置きたいファイルやフォルダを選択し、右クリックメニューから[インポート]を実行します。
インポート
インポート

リポジトリのパスを指定するにはfile:///の後にリポジトリのパスを指定します。
ネットワーク上にあるリポジトリのパスを指定するにはfile://の様に、スラッシュの数を一つ減らしてリポジトリのパスを指定します。
リポジトリへのパスを指定する場合は、接続方法によって書式を変える必要があります。
接続 書式
自分のマシン上のリポジトリを利用する場合 file:///
ネットワーク上のリポジトリを利用する場合file://
Apache経由でリポジトリを利用する場合 http://
Apache経由でリポジトリを利用する場合(SSL) https://
Svnserve経由でリポジトリを利用する場合 svn://
SSH経由でリポジトリを利用する場合 svn+SSH://
  
リポジトリの指定
リポジトリの指定

チェックアウト

バージョン管理を利用するには、作業ディレクトリが必要です。バージョン管理システムでは個々のマシンにある 作業ディレクトリで編集を行い、リポジトリにコミットを行います。
ローカルマシンに作業ディレクトリを作成するには[SVNチェックアウト]を実行します。
まずは作業ディレクトリとして使用するディレクトリを作成します。このディレクトリを選択して、右クリックメニューから[SVNチェックアウト]を実行します。
作業ディレクトリ作成後はこのディレクトリ内のファイルを編集します。

TortoiseSVNチェックアウト
TortoiseSVNチェックアウト
SVNチェックアウト

編集

ソースの編集は好みのアプリケーション等で行ってください。
ただし、以下の場合は,TortoiseSVNの右クリックメニューから行うようにしてください。

  • バージョン管理されているファイルやディレクトリを削除する場合[削除]
  • バージョン管理されているファイルやディレクトリの名前を変更する場合[名前を変更]
  • 新たにファイルやディレクトリをリポジトリに追加する場合[追加]
  • 作業ディレクトリに加えた変更を元に戻す[元に戻す]
ファイルを編集して保存すると、編集マークがつきます。また、ファイルやディレクトリを追加すると、追加マークがつきます。

編集内容の確認

[変更をチェック] で作業ディレクトリで行った変更内容をチェックできます。 また、編集後のファイルを選択して[差分] を実行すると、ファイルにどのような変更が加えられたかを細かく見ることができます。
変更をチェック
変更をチェック

コミット

編集した内容をリポジトリに反映するためには[SVNコミット]を実行します。 自分が[SVN更新]して[SVNコミット]するまでの間に、リポジトリに変更が加えられていない場合は、[SVNコミット]を実行する事ができます。

コミット
コミット

衝突

自分が[SVN更新]して[SVNコミット]するまでの間に、他の人により[SVNコミット]が等行われて、リポジトリの内容が変更されている場合は、 [SVNコミット]することができません。その場合は、まず[SVN更新]を実行して、他の人の変更内容と自分の変更内容が衝突していないか確認する必要があります。
コミット時のエラー
コミット時のエラー
[SVN更新]後、衝突があった場合は、衝突のあったファイルにマークがつきます。中身を見ると、自分が変更した部分と 他の人が変更した部分が以下のようにマークされます。
<<<<<< .mine
自分が変更した内容
=======
同じ部分で既にコミットされている内容>>>>>>> .r3

<<<<<< .mine から =======が、衝突部分で自分が編集した内容です。
=======から>>>>>>> .r3は衝突部分で他の人がコミットした内容とそのバージョンです。

衝突時が検出されると、右クリックメニューに[衝突の編集][問題の解消]が追加されます。
[衝突の編集] を実行すると、TorotiseSVNに付属のTortoiseMargeが起動し、衝突部分を編集できます。 (お好みのソフトで編集しても良いです。)
衝突部分の編集が完了した場合は、 [問題の解消]を実行して、衝突状態を解消します。
衝突時のメニュー
衝突時のメニュー

更新

他の人がコミットした内容を自分の作業ディレクトリに取り込むために行います。
既に[SVNチェックアウト]を行って、作業ディレクトリを作成済みの場合に実行可能です。
リポジトリから最新のバージョンを取得するときに行います。
この処理で他のユーザーと更新部分が重なっている場合は「衝突」が起こります。

ロックを取得

ロックはSubversion 1.2 及び TortoiseSVN 1.2 から利用できるようになった機能です。
他の人がソースやドキュメント等にコミットできないようにロックをかける事ができます。
これにより、衝突が起こらなくなりますが、ロックがかけられている間は、他の人はファイルをコミットすることができません。
もちろん、他のユーザーが既にロックを取得していた場合は、ロックを取得することはできません。

コミットした時点で、誰かがロックしていたことが分かるのでは作業ロスが発生する場合もあります。
ファイルを編集する時点でロックの取得を強制することもできます。
参照:Subversion Tips 編集時にロックの取得を必須にするには

ロックを開放

ロックをかけていたものを開放します。
これにより、他の人がそのファイルをコミットすることができるようになります。
Index
Subversionのインストールと設定(Apache編)
Subversionのインストールと設定(svnserve編)
TortoiseSVNのインストールと設定
TortoiseSVNの使い方
Subversion Tips