セットアップの後処理
プロジェクトをローカルマシンに取得した後で、プロジェクトの設定が必要な場合があります。例えば、ASP.NETのWebアプリケーションのプロジェクトであれば、仮想ディレクトリの登録、ディレクトリのアクセス許可の設定、スクリプトマップの追加などが必要になることがあります。
また、リポジトリの構成や内容によっては、プロジェクトで必要な依存ファイルが入っていないことがあります。プロジェクトで必要なサポートアセンブリは、他のユーザーができるだけ簡単に取得できるようにしておくのがよいでしょう。私の場合は、各ソリューションのリポジトリに「SupportAssemblies」というフォルダを作成し、プロジェクトで必要となる外部アセンブリをまとめて格納しておくことがよくあります。そして、各プロジェクトでそれらのアセンブリを関連付けておきます。こうすれば、全開発者が同じバージョンの外部アセンブリを利用することになります。
ただし、GACのコンポーネントの場合には話が少々ややこしくなり、各ユーザーのマシンで適切なコンポーネントが登録されている必要が出てきます。私はこの場合も、ライセンスやその他の面で可能であれば、上記と同様に「SupportAssemblies」フォルダでコントロールを配布するという方法を選び、各開発者がスムーズに作業を進められるようにします。依存関係についてはドキュメントにまとめ、プロジェクトに「Readme」ファイルを同梱しておくことをお勧めします。
TortoiseSVNによるSubversionの主な操作
ここまでで、ソース管理による作業の準備が整いました。前述のとおり、Subversionは「コピー・修正・マージ」モデルですので、明示的に指定しない限りはファイルのロックは行われず、ソースファイルは自由に修正できます。
基本的には、ファイルの編集を普通に行えば、Subversionが変更を把握してくれます。変更を加えたファイルかどうかは、TortoiseSVNのエクスプローラ統合機能で確認できます。すなわち、ファイルのアイコンに赤色の感嘆符が付いていれば、自分が加えた変更をサーバに反映していないという意味です。
この感嘆符は、ファイルだけでなくフォルダにも表示されます。配下に未更新の変更があるフォルダという意味です。また、感嘆符の意味を勘違いしないよう注意してください。別のユーザーが修正したという意味ではなく、あくまで自分自身が修正したという意味であり、コミットが必要であることを表しています。
Subversionサーバに変更内容を反映して同期するには、図8の[SVN Commit]を選択します。図11のようなダイアログボックスが表示され、コミット処理で更新される全ファイルをその場で確認できます。また、対象外とするファイルを指定することもできます。例えば、「web.config/app.config」や、特別なビルド手順があるときのプロジェクトファイルなど、あえて更新しないファイルがある場合に役立ちます。

コミットでは、自分が加えた変更をサーバのリポジトリに反映します。一方、他のユーザーがリポジトリにコミットした変更をローカルに受信するには、個別ファイルまたはフォルダに対し、[SVN Update]を明示的に実行します(図12を参照)。
![図12 変更されたファイルの確認。[SVN Update]では、他ユーザーが変更したリポジトリ内のファイルを確認および選択できます](http://cz-cdn.shoeisha.jp/static/images/article/3114/38974_figure12.jpg)
[SVN Update]では、サーバ側の最新のファイルの内容が読み込まれ、変更が加わっている部分がローカル側のファイルに自動的にマージされます。通常は、更新に関する警告や通知は表示されませんが、競合がある場合にはエラーとなり、競合を解決しないと更新は完了しません。
大抵は、まず更新を実行し、プロジェクトを再コンパイルしたうえで、自分の修正をリポジトリにコミットするのがよいでしょう。こうすれば、マージ後の内容でビルドが失敗しないことを確認できます。また、一般論としては、少し修正を加えるごとにこまめにコミットし、リポジトリをできるだけ最新の状態に維持する方がよいでしょう。
チェックアウトの時間を短めにするほど、競合も少なくなります。
リポジトリ側のファイルのいずれかのバージョンと、ローカル側のファイルとの違いを確認したい場合には、両者を照合して比較できる機能があります。[Check for Modifications(変更をチェック)]と[Diff]の2つのコマンドです。いずれも、変更の有無を確認できます。
[Check for Modifications]コマンドでは、ローカル側とサーバ側とで内容に違いがあるすべてのファイルが一覧表示されます。いずれかのファイルをクリックすると、差分ビューアが表示されます。TortoiseSVNに標準装備された差分確認ツール(図13を参照)では、ローカル側とサーバ側のファイルの内容が横並びで表示され、違いを確認できます。
図13は標準装備の差分確認ツールですが、Beyond Compareなど、別のツールを指定することもできます。

