見出し画像

SVNの環境構築と使用方法のまとめ

1. はじめに

 チーム開発で役に立つツールの一つが、プログラムの変更履歴を管理する「バージョン管理ツール」である。このツールは、「最新のバージョンはどれか」「最新版との差分は何か」といった変更履歴を把握できる。

 様々なバージョン管理ツールの中で、最も有名なツールは、「Git」と「Subversion(SVN)」だろう。昨今では、Gitが人気であるが、SVNを使用する会社も少なくない。

 ここでは、自分の整理のためにSVNの導入方法と使用方法をまとめる。

2. SVNの環境構築

2.1 想定している環境

 想定している環境を下記に示す。

  • OS: Windows10

  • クライアントソフト: TortoiseSVN

 OSはWindows系を想定する。また、GUIで操作しやすいようにTortoiseSVNを使用する。

 SVNを別途入れる必要があると思ったが、TotoiseSVNを入れると一緒に入ってくるようだ。

2.2 ダウンロード & インストール

 TortoiseSVNのインストーラーからSVNとTortoiseSVNをインストールする。ネットからTortoiseSVNの64ビット版のインストーラーをダウンロードする。次に、ダウンロードしたインストーラーを起動する。

 基本的に、NEXTで進めるだけだが、「command line client tools」を選択し、「Will be installed on local hard drive」にチェックを付けてインストールする。

 「command line client tools」にチェックを付けると、コマンドラインからSVNコマンドを実行できる。残りは、NEXTを押していけば、SVNをインストールできる。

2.3 動作確認

 動作確認として、デスクトップで右クリックを押す。ここで、メニューから「TortoiseSVN」を表示されるか確認する。

 上記の通り、SVN関連の名前が表示できれば、インストール完了である。

3. 使用方法

 SVNの使用方法を解説する。

3.1 リポジトリ(管理場所)の作成

 バージョン管理ツールでは、管理するプログラムの格納場所を、「リポジトリ」と呼ぶ。「リポジトリにある……」という話の場合は、格納場所の話をしていると思ってよい。

 まずは、リポジトリを作成する。SVNの右クリックメニューから「TortoiseSVN」→「Create repository here」を選択する。

 「Create repository here」を選択すると、SVNがリポジトリを作成できる。

 作成後、以下の「Repository created」というウィンドウを表示する。

3.2 リポジトリの確認

 「Repository created」で、「Create folder structure」を選択すると、SVNはbranch、tags、trunkの3つのフォルダを作成する。

 作成したリポジトリを確認するには、リポジトリブラウザという画面から確認する。表示方法は、右クリックメニューから「Repo-browser」を選択する。

 「Repo-browser」を選択すると、下記のリポジトリブラウザを表示する。

 上記の通り、3つのフォルダ(branch、tags、trunk)が存在することが確認できる。下記に、これらのフォルダを簡単に説明する。

3.2.1 branch(ブランチ)

 ブランチとは、メイン開発とは異なる独立したバージョンのことである。例えば、複数の機種がある洗濯機を開発する場合を考える。その場合は、あるバージョンを起点として、その派生品に枝分かれする。そのような開発をする場合は、ブランチ環境を作成して開発する。

3.2.2 tags(タグ)

 タグとは、バージョンを識別するための目印である。例えば、バージョン1、バージョン2のようにリリースのタイミングでタグをつけ、大まかなバージョンを識別できる。

3.2.3 trunk(トランク)

 トランクとは、最新版の環境の場所を表す。そのため、トランクを確認すると、現状の最新版が何か把握できる。

3.3 ソースコードを取得する(チェックアウト)

 作成したリポジトリから、ソースコードを取得するチェックアウトをする。

3.3.1 チェックアウト

 チェックアウトするには、例えば、デスクトップなどに適当なフォルダを作成し、右クリックメニューから「SVN Checkout」を選択する。

 SVN Checkoutを選択すると、以下の画面が出る。

 「URL repository」にリポジトリのパス、「Checkout Directory」にソースコードを取得するパス名称を入れる。Revisionに「HEAD revision」にチェックを入れると、最新版のバージョンをチェックアウトする。

 OKを押すと、チェックアウトを開始する。

 上記の画面を表示し、「Complete …」となればチェックアウト完了である。なお、ローカルのフォルダを確認して、ファイルが取得いているか確認してもよい。

3.3.2 .svnフォルダ

 チェックアウトしたフォルダの中を確認すると、「.svn」と書いてあるフォルダがある。

 .svnとは、SVN関連ファイルである。おそらくここにバージョン管理の情報が入っている。そのため、このファイルを削除すると、SVNとの関連が消えるため、注意すること。

3.4 ファイルの追加とコミット

 ファイルをSVNに反映するには、「ファイルの追加」と「コミット(登録処理のこと)」をする必要がある。

3.4.1 ファイルの追加

 新しいファイルを作成しても、バージョン管理ツールには認識されない。

 上記の画面は、チェックアウトしたtrunkのローカルフォルダに、source.cppを新規作成した様子である。TortoiseSVNでは、識別対象のファイルにはマークが付くが、souce.cppには何もついていない。そこで、バージョン管理対象であることをSVNに教える。

 追加は、ファイルを右クリックで選択し、メニューから「Add」を選択する。

 Addを選択すると、以下のようにファイルにプラスマークがつく。

 これで、SVNがsource.cppが追跡対象のファイルであることを教えることができる。

3.4.2 コミット(ファイルの登録)

 「追加」をすると、ソースコードを登録する準備が整う。SVNでは、ファイルの登録処理を「コミット」と呼ぶ。

 操作方法は、右クリックメニューから、「SVN Commit」を選択する。

 選択すると、下記のようなコミット画面を表示する。

 SVNは、Message欄に「コミット時のログメッセージ」、「下部の欄に変更・追加するファイル」を表示する。今回は、source.cppを追加するメッセージを出力する。また、Statusに「追加」などのステータスを確認できる。

 コミットする場合は、「OK」を選択すると、下記の画面が表示される。

 「Committing transaction…Completed」と表示する。これで、ソースコードをSVNに登録することができた。

3.4.3 差分の確認

 コミット時は、ファイルの追加以外にも、ファイルの一部修正することもある。SVNでは、トランクとローカル間の差分を出力できる。

 上記の赤いビックリマークが変更差分のあるファイルである。具体的な変更差分は、「Check for modifications」を選択して確認する。

 「Check for modifications」選択すると、下記のような変更差分を表示する。

 Statusに「modified」と書いてあることが分かる(modifiedとは英語では修正されたを表す)。souce.cppをダブルクリックすると、下記の差分画面を表示する。

 左側が変更前、右側が変更後のファイルである。修正前には、何も文字は入っていなかったが、修正後にはプログラムが入っていることが分かる。

 SVN Commitからも、差分を確認することができる。

 上記の画面で、souce.cppをダブルクリックする。この操作をすると、同様の差分が確認できる。

3.5 リバート(直前に戻す)

 修正作業中にやっぱりチェックアウトしたときの状態に戻したい時がある。この場合は、直前の状態に戻す、「リバート」を行う。

 例えば、上記のような差分があったとする。ここで、「やっぱりチェックアウト前に戻りたい」と思った場合は、右クリックメニューから「Revert」を選択する。

 Revertを選択すると、下記のウィンドウが表示される。

 上記はリバート対象のファイルの一覧である。ここでOKを選択すると、下記の「Rivert Finished」画面が出る。

 「Complated!」が出ていればリバート完了で、修正前の状態に戻すことができる。

3.6 エクスポート(ファイルだけ持ってきたい)

 チェックアウトをすると、「.svn」というSVNとの関連付けが入ったファイルも一緒に持ってくる。小さいプロジェクトならば問題ないが、意外とファイルサイズが大きい。その場合は、Export(エクスポート)を使用して、ファイルのみを持ってきてもよい。

 エクスポートを行う場合は、右クリックメニューからExportを選択する。

 Exportを選択すると、ファイルダイアログが表示される。そこで、任意のフォルダを選択すると、ファイルがエクスポートできる。

3.7 最新版に更新する

 最新のファイルを取得するには、SVN Updateを使用する。例えば、もともとあったsource.cppを削除した場合を考える。

 この場合は、右クリックメニューから、「SVN Update」を選択する。

 実行すると、下記の通り、もとのsource.cppが戻っていることがわかる。

3.8 一度コミットした後、取り消したい

 SVNを使用していると、どうしてもコミットミスが発生する。筆者がよくやるのは、一度コミットした後に、やっぱり変更を取り消したい時である。

 SVNでは、「やっぱりやーめた」という運用はなるべくしない。その場合は、チェックアウトする時に、HEADリビジョンを過去のバージョンとしてチェックアウトし、再度コミットする。

3.9 ブランチの作成

 複数のチームが別々の目的の作業を行う場合を考える。この場合は、trunkで開発を行ってもよいが、「ブランチ」という別のリポジトリを作成する。

 ブランチの操作方法は、右クリックメニューから「Branch/tag」を選択する。

 選択すると、下記の画面が表示される。

 ここで、「To Path」に任意の名称を入れる。筆者は、branch/branchtestという名称とした。

 これでブランチが作成できる。リポジトリブラウザから、ブランチが作成できたか確認する。

 このように、「branchtest」というブランチが作成できた。

4. SVNのコマンドライン実行

 TortoiseSVNからSVNを操作する方法もあるが、慣れてくると煩わしい。その場合は、コマンドラインから実行すると便利である。

 ここではあまり多くは触れないが、ヘルプコマンドを確認すると、おおよそのコマンドを把握できる。

svn help

 helpコマンドを実行すると、以下の実行結果を出力する。

svn help
usage: svn <subcommand> [options] [args]
Subversion command-line client.
Type 'svn help <subcommand>' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules,
     'svn --version --verbose' to see dependency versions as well,
     'svn --version --quiet' to see just the version number.

Most subcommands take file and/or directory arguments, recursing
on the directories.  If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.

Available subcommands:
   add
   auth
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
・・・

 簡単なコマンドを以下に示す。

・ステータス確認 svn st
・ファイル追加 svn add .\newfile.txt
・リバート svn revert test.cpp
・コミット svn commit test2.cpp -m "test"

 このように、TortoiseSVNを使わなくても、コマンドラインから実行できる。

4.1 ちょっとした便利コマンド

 筆者のお気に入りは、svnlogコマンドとsvndiffコマンドである。例えば、以下のコマンドを入力などである。

//リビジョン1~3までのログを出力する
svn log -r 1:3

//リビジョン1:5までの差分を表示する
svn diff -r 1:5

4.2 チェックアウト

 チェックアウトをする場合は、下記のコマンドで実行する。

svn checkout repoURL localPath

 checkoutでレポジトリのURLとローカルのパスを指定すればOKである。

5. おわりに

 チーム開発をする場合、何らかのバージョン管理ツールを使用すると、非常に便利である。今回は、SVNのインストール方法と、使用方法をまとめた。筆者も適当に使っているところがあるため、もうちょっと活用方法を知れればよいと思う。

この記事が気に入ったらサポートをしてみませんか?