2012年4月9日月曜日

Visual Studioと.NET開発者のためのSubversion/TortoiseSVN入門 / DevX - インターネットコム コラム


はじめに

 ソース管理はソフトウェア開発で重要な役割を果たします。チーム開発はもちろんのこと、自分1人での開発でも効果は絶大です。アプリケーション開発をスムーズに管理できますし、プロジェクトをきちんとバックアップしたり、ファイルレベルやプロジェクトレベルで以前の状態にロールバックできる点も安心です。私は最近、オープンソースのSubversionとTortoiseSVNを使い込んでいます。満足の行くソース管理ツールにやっと巡り合えたという思いです。この記事では、Visual StudioプロジェクトでSubversionとTortoiseSVNを利用する方法について、ひととおりの基礎知識を説明します。

 ここでは、Subversionのインストールと設定から、TortoiseSVNでローカルのVisual Studioプロジェクトを扱うための基本的な操作までを示します。Subversionの詳細な解説は他に譲り、とりあえず使い始めるまでに必要な知識だけを、順を追って説明していきます。

編集部注

 この記事はもともとCoDe Magazineの2008年7月/8月号に掲載されたものですが、許可を得てここに転載しました。

Subversionとは

 Subversionはオープンソースのソース管理リポジトリツールです。オープンソースプロジェクトで広く使われており、一般の大規模開発での利用も次第に増えつつあります。動作は高速かつスムーズで、サイズが小さくインストールも簡単です。しかもオープンソースのため、無償で利用できます。ファイルベースによる管理で、シンプルなディレクトリ構造のリポジトリを使用するため、コピーやバックアップも容易です。

 TortoiseSVNはSubversionをグラフィカルに利用するためのツールで、エクスプローラのシェル拡張として動作します。 Subversionのコマンドラインインターフェースの代わりに、エクスプローラのコンテキストメニューで対象ファイルを操作したり、アイコンのオーバーレイでファイルの状態を把握したりできます。使い慣れたエクスプローラのインターフェースをソース管理に利用できるのは大きなメリットです。そのうえ、管理対象のファイルと実際のディレクトリ構造との関係が一目瞭然で、どのファイルがソース管理の配下にあるかがすぐに分かります。

 Subversionのソース管理は「コピー・修正・マージ」モデルで行われます。ファイルをロックしたり、1人のユーザーがファイルを独占したりといった方法ではなく、変更を加えた部分をソースファイルにマージするというやり方です。マージできない変更がある場合(複数のユーザーが同じ行に 変更を加えた場合など)にのみ、競合が通知されます。

 私はVisual Studioの統合セキュリティに慣れていたため、マージという考え方に最初は半信半疑でした。しかし実際に使ってみると、極めて円滑に開発作業を進められることが分かりました。チェックアウトとチェックインを頻繁に繰り返したり、他ユーザーとの絡みでファイルをロックしたりという面倒がありません。コードに対し必要な作業を行い、完了後にTortoiseSVNですべての変更をチェックインするだけです。Visual SourceSafeやVaultなど、統合型のソースコード管理ツールを使ってきた人なら、ソース管理がVisual Studioと統合されていないのは言語道断に思えるかもしれません。私も最初は、Visual Studioに統合できないことを心配に思っていました。しかしいざ使ってみると、その点はまったく苦になりません。むしろ、統合型のソース管理ツールで発生していた問題に遭遇せずに済みます。統合型のツールでは、ソース管理の動作がおかしくなることがよくあり、複雑なVisual Studioソリューションや共有プロジェクトの場合には特に顕著でした。そのたびにVisual Studioやソース管理ツールでの対処が必要になって以前はイライラしていましたが、Subversionではそのようなことはありません。

 Subversionはファイルシステムを追跡する仕組みが基盤となっているため、基本的にはどんなツールとの組み合わせでも利用できます。実際私は、.NETプロジェクトと古くからのFoxProプロジェクトの両方でSubversionを利用しています。同じ手順に従って統一感のある操作が可能です。さらにSubversionなら、ドキュメントからサポートファイルに至るまで、通常はVisual Studioプロジェクトに入っていないファイルも含めて、すべての種類のファイルを保存できます。

インストール

 まずは、SubversionとTortoiseSVNをダウンロードしましょう。インストールは、Subversionの後にTortoiseSVN という順番で行います。さらに、Visual Studioと統合したい場合は、VisualSVN(49ドル)やAnkh(フリー)といったツールもあります。

 TortoiseSVNはSubversionのGUIフロントエンドとして動作します。バージョンが違うと対応できない場合がありますので、両方とも最新バージョンをインストールするようにしましょう。

注1

 VisualSVNはVisual Studioと統合できますが、UIの大半はTortoiseSVNと同一です。

 ここからは、新しいリポジトリを作成して、複数のプロジェクトで構成されるVisual Studioのソリューションを追加する方法について説明していきます。

 リポジトリの作成が不要で、既存のリポジトリのローカルコピーを作成する方法のみを知りたい方は、「リポジトリからローカルにファイルのコピーを取得」の節までお進みください。

TortoiseSVNの設定

 最初に、TortoiseSVNの設定に小さな変更を1つ加えておくことをお勧めします。それは、ローカルのSVNリポジトリの名前を.svnから _svnに変えるという設定です。Visual Studioでは、先頭がピリオドのフォルダ名で問題が発生するため、_svnとしておく方が安全です。特に、Visual Studio統合型のツールに後で移行する可能性がある場合には必要になります。

 TortoiseSVNのインストールが完了した状態で、エクスプローラでファイルまたはフォルダを右クリックし、ショートカットメニューの[TortoiseSVN]を選択して、[Settings]を選択します。次に、[General]タブの[Use '_svn' instead of '.svn'(".svn"ディレクトリの代わりに"_svn"を利用する)]チェックボックスをオンにします(図1を参照)。

図1 TortoiseSVN設定の[General]タブ。Visual Studioでは、フォルダ名の先頭がピリオドの場合に問題が発生するため、.svnではなく_svnを使用するようにTortoiseSVNの設定を変更しておくことをお勧めします


私のガールフレンドを行ってください

TortoiseSVNによるリポジトリの新規作成

 次に、新しいリポジトリの作成に進みます。リポジトリとは、TortoiseSVNが使用するディスク上の保存領域のことで、バージョン管理の対象となる全データがその中に保存されます。リポジトリの作成場所は、ローカルマシンでもよいですし、ユーザーがアクセス権を持つリモートサーバでも構いません。リモートサーバへのアクセスには、Subversionのデーモンサービスを用いる方法と、別途インストールしたApacheモジュールでHTTPを用いる方法があります。いずれの場合も、リポジトリを作成したマシン上でサービスが稼動している必要があるという点が肝心です。

 リポジトリの作成では、メインのリポジトリとなるメインフォルダをまず作成します。私はいつも、検索やバックアップが簡単なように、最上位レベルのフォルダを使うよ うにしています。そこで、例えば「d:\subversion」のようにフォルダを決めたうえで、次の操作を行います。

  1. フォルダ「d:\subversion」を作成します。
  2. [TortoiseSVN]を右クリックし、[Create repository here.(ここにリポジトリを作成)]を選択します。
  3. このリポジトリのアクセス許可を設定します。
 アクセス許可を設定するには、「d:\subversion\conf\svnserve.conf」を編集し、パスワードを設定します。「SvnServe.conf」で次のように設定します。
[general] # anon-access = read auth-access = write password-db = passwd realm = SummaLp
 この設定の場合、リポジトリへのアクセスには認証が必須になります。認証を受けたユーザーには書き込み権限を付与し、匿名ユーザーには一切のアクセス権を与えません。

 次にパスワードファイル(ファイル名は拡張子なしの「passwd」)を編集し、アクセスを認めるユーザーを、ユーザー名とパスワードのペアの形で設定します。次のような形式です。

[users] ricks = wonkiewind billp = haggard

Subversionをサービスとして起動する設定

 リポジトリを作成したら、次はリモートからアクセスできるようにするための設定です。方法は2つあります。1つは、Subversionに内蔵のデーモンサーバを使い、TCP/IP接続(デフォルトポートは3690番)経由でリポジトリのデータを取得する方法です。もう1つは、Apacheと Apacheモジュールを使い、HTTP経由でリポジトリに接続する方法です。デーモンを使ったTCP/IP接続はSubversionにネイティブの方法で、セットアップも簡単です。速度の面でもHTTP方式より優れています。一方、HTTP方式はApache経由で動作するため、セキュリティや認証の面で優れており、アクセスも80番ポートで可能です。この記事では、TCP/IPデーモンサービスを利用する方法のみを説明します。

 このサービスは、Subversionのインストール先の「BIN」ディレクトリにある「SvnServe.exe」です。このファイルを手動で実行しても動きますが、サービスとしてインストールする方が断然お勧めです。それには、次のコマンドラインを実行します(バッチファイルにするとよいでしょう。全体を1行で記述してください)。

sc create svn binpath= "\"c:\programfiles\subversion\bin\svnserve.exe\" --service -rd:\subversion" displayname= "Subversion Server" depend= Tcpip start= auto
 上記のコマンド中のパスは、実際のインストール先とリポジトリのパスに合わせて修正してください。また、コマンド中のスペースも重要で、省略はできません。私の場合、スペースを入れなかったせいでうまく動作しなかったことがありました。

 別のポートを使用したい場合は、「listen-port=nn」と追加します。nnはポート番号です。その他のオプションについては、ドキュメントを参照ください。

 サービスを開始するには、サービスマネージャかコマンドプロンプトを使います。コマンドは次のようにします。

 これが必要なのは最初の1回のみです。上記のコマンドでサービスをインストールした場合、次回のWindowsの起動時からはサービスも自動的に起動します。

リポジトリの動作確認

 リポジトリの動作を確認するために、任意の場所でTortoiseSVNを起動し、IPアドレスかホスト名を使って接続を試してみます。エクスプローラを開き、右クリックして、ショートカットメニューの[TortoiseSVN]を選択し、[Repo-browser.]を選択します。「svn:///」と入力すると、作成したリポジトリが表示されるはずです。リモートマシンにリポジトリをインストールした場合は、IP アドレスかドメイン名を使います。

 ノードをダブルクリックしてリポジトリを開いてみましょう。エラーメッセージが表示されるようなら、リポジトリに接続できていません。ローカルマシンのリポジトリであれば、普通は問題ないはずです。接続できない場合は、サービスの登録時に指定したリポジトリとパスに誤りがないか確認してください。リモートマシンのリポジトリの場合は、サーバが待機しているポートへの通信が接続側とサーバ側のファイアウォールを通過できるかどうか確認してください。デフォルトのポートは3690番です。

 エラーなしでリポジトリを開けるようになったら、Subversionによる共有ソース管理の準備は完了です。

ソース管理へのプロジェクトとファイルの追加

 ここからは、Visual StudioのプロジェクトをSubversionのソース管理に追加する方法を見ていきます。前述のとおり、TortoiseSVNにはVisual Studioへの統合機能はなく、ディレクトリとファイルのレベルでソース管理が行われます。基本的には、ソース管理にはどんなファイルやディレクトリでも追加できます。つまり、どのアプリケーション用のファイルであっても、Subversionで管理できます。

 まず、リポジトリの構造を決める必要があります。プロジェクトの数が多い場合は、きちんとグループ化できる構造の方がよいでしょう。私の場合、大抵は次のような構造にします。


medicallケアの最新トレンドは何ですか
Repository -- ProjectGroup1 (ie. Solution level) ----Project ----Project ----Project ----Project -- ProjectGroup2 (ie. Solution Level) ----Project ----Project
 しかし、各自の好みに合わせて、別の構造にしても構いません。私の場合は、プロジェクトグループ/ソリューション用のフォルダを個別に作り、ソリューションファイルをそこに格納して、配下の複数プロジェクトを取りまとめる「大見出し」として使うようにしています。こうしないと、プロジェクトレベルのフォルダの収拾がつかなくなることが多いからです。

 この記事では、次のようなフォルダ構造を使うことにします。

Repository -- SummaLp ---- SummaLpManager ---- SummaLpBusiness ---- SupportAssemblies

最上位フォルダの新規作成

 TortoiseSVNでプロジェクトを作成するときには少々工夫が必要です。サーバにファイルやフォルダをインポートするのは簡単ですが、インポートした内容が、自動ではローカルにチェックアウトされません。しかも、インポートの完了後すぐにチェックアウトすることもできません。ソース管理の対象でない既存のファイルをTortoiseSVNで上書きすることはできないからです。こうしたことから、インポート機能は使わないのが1番です。代わりに、リポジトリに空のフォルダを作成してから、そのフォルダをチェックアウトし、ファイルやサブフォルダを手動で追加するという方法をとることにします。

 ここでは、図2と図3に示すやり方で、「SummaLp」という最上位フォルダを作成します。

図2 フォルダの新規作成。リポジトリに新しい空のフォルダをまず作成し、チェックアウトしてから、ファイルを追加するという方法が無難です

図3 ファイルの追加。フォルダができたら、リポジトリにファイルを追加します

 手順は次のとおりです。
  1. 右クリックし、[TortoiseSVN]を選択して、[Repo-browser.]を選択します。
  2. [Create Folder]を選択して、メインリポジトリの直下に新しい最上位フォルダを作成します。フォルダ名は「SummaLp」とします。
  3. エクスプローラに戻り、「SummaLp」フォルダに移動または作成します。
  4. このフォルダを右クリックし、[Checkout…]を選択します(図4を参照)。
  5. リポジトリの最上位フォルダを選択し、対応するローカルパスを指定します(図5を参照)。

図4 ファイルのチェックアウト。ファイルをチェックアウトするには、メニューの[SVN Checkout…]を選択します。

図5 チェックアウト。チェックアウトを実行すると、指定のローカルフォルダに対し、ファイルとフォルダがリポジトリからコピーされます

 以上の手順で、ルートフォルダがソース管理の配下に置かれ、個々のファイルやサブフォルダを簡単に追加できる状態になりました。現時点では、実際にチェックアウトされたファイルはありません。指定のフォルダをSubversionで監視するよう指示しただけの段階です。エクスプローラに戻って、このフォルダを見てみると、アイコンに緑色のチェックマークが表示されています(図6を参照)。

図6 ソース管理のアイコン。ソース管理の配下にあるフォルダとファイルには、アイコンのオーバーレイが表示され、チェックアウトの状態が分かるようになっています

 配下のファイルやフォルダを一度にまとめてインポートしようと考えるのはやめましょう。前述のとおり、リポジトリでプロジェクトフォルダをまず作成してから、そのフォルダをソース管理の配下に置き、個々のファイルを追加する方がずっと簡単です。

 いずれかのプロジェクトフォルダを選択し、先ほどと同様の手順でフォルダの作成を進めます。

  1. TortoiseSVNでリポジトリを参照します。
  2. 「SummaLp」フォルダの下にサブフォルダを作成し、プロジェクトの名前「SummaLpManager」を付けます。
  3. エクスプローラで、対応するフォルダにチェックアウトします。これで、プロジェクトフォルダがソース管理の配下に置かれます。
  4. ファイルとフォルダを選択し、右クリックメニューから[Add]を実行します(図7を参照)。

図7 ファイルの追加。メニュー項目の[Add]を使用して、ソース管理とリポジトリにローカルからファイルを追加できます

 追加する項目はよく吟味します。場合によっては、サブフォルダ全体ではなくファイルを個別に追加する方がよいでしょう。「obj」フォルダや、「notes」、「suo」、「.user」の各ファイル、ログファイルなど、管理の対象から外した方がよさそうなものは省略しましょう。

 ファイルを追加し終えた後でフォルダを見てみると、各ファイルのアイコンにプラス記号が付いているはずです。この記号は、ローカルストアに追加しただけのファイルを表します。まだサーバと同期していないという意味です。

 サーバと同期するには、プロジェクトフォルダを右クリックし、[SVN Commit]を選択します(図8を参照)。

図8 変更または追加したファイルのコミット。変更または追加したファイルをリポジトリにコミットするには、[SVN Commit]を使用します

 コミットとは、簡単に言えば、ローカルで加えたすべての変更をサーバに同期することを指します。今回のケースで言えば、新しく追加したファイルをサーバにコピーし、リポジトリに格納するということです。ファイルの修正を自動でマージできないなど、競合がある場合には、更新全体が失敗し、エラーとなります。コミットの処理の可否は、いわば連帯責任です。競合が生じるファイルが1つでもあれば、コミットは行われません。その場合、競合を解決しないとチェックインはできません。

 コミットが完了すると、ローカルコピーは最新の状態となります(図9を参照)。これで、リポジトリの同期がとれました。

図9 同期後のローカルコピー。すべてのファイルを追加してチェックインし終えると、緑色のチェックマークが付いた最新状態のリポジトリとなります


誰がアドキンスの食事を作成しました?
 この段階では、リポジトリが保持するファイルと、ローカルフォルダに置かれた作業用ファイルとが一致しています。図10はリポジトリブラウザの表示の様子です。これ以外のプロジェクトフォルダについても、上記と同じ手順をそれぞれ繰り返してください。

図10 リポジトリブラウザの表示。リポジトリブラウザでは、リポジトリに格納された全ファイルを参照できます。現時点では、ローカルに置かれた作業用ファイルと一致しています

 ソリューションファイルもソース管理に追加しておきましょう。まだチェックインしていない場合は、[Add]をクリックして追加し、[Commit]をクリックしてコミットします。他のパスとの相対位置を考えて、ソリューションファイルはルート階層(この例では「SummaLP」)に入れるのがよいでしょう。

 以上で、リポジトリの準備が完了し、共有して使える状態になりました。新しい階層を作成して新しいファイルをリポジトリに追加する大まかな手順をまとめると、次のようになります。

  • リポジトリに空のフォルダを作成する。
  • そのままローカルフォルダにチェックアウトする。
  • TortoiseSVNを使ってエクスプローラでファイルを追加する。
  • 変更をコミットする。

リポジトリからローカルにファイルのコピーを取得

 ここまで説明した手順は、最初にリポジトリを作成するときに1回だけ必要な操作でした。一方、開発者がリポジトリに接続して最新リビジョンのコピーを初めてローカルマシンに取得するときの操作はずっと簡単です。
  1. ローカルコピーの格納場所となるフォルダを決めます。
  2. 右クリックし、[SVN Checkout]を選択します(図4を参照)。
  3. リポジトリを開き、リポジトリ内のプロジェクトフォルダと、チェックアウトしたファイルを取得するローカルフォルダのパスを指定します。本記事の例では、最上位フォルダの「SummaLp」を選択します。これで[Checkout]を選択すれば、プロジェクト全体とソリューションファイルを取得できます。

セットアップの後処理

 プロジェクトをローカルマシンに取得した後で、プロジェクトの設定が必要な場合があります。例えば、ASP.NETのWebアプリケーションのプロジェクトであれば、仮想ディレクトリの登録、ディレクトリのアクセス許可の設定、スクリプトマップの追加などが必要になることがあります。

 また、リポジトリの構成や内容によっては、プロジェクトで必要な依存ファイルが入っていないことがあります。プロジェクトで必要なサポートアセンブリは、他のユーザーができるだけ簡単に取得できるようにしておくのがよいでしょう。私の場合は、各ソリューションのリポジトリに「SupportAssemblies」というフォルダを作成し、プロジェクトで必要となる外部アセンブリをまとめて格納しておくことがよくあります。そして、各プロジェクトでそ� ��らのアセンブリを関連付けておきます。こうすれば、全開発者が同じバージョンの外部アセンブリを利用することになります。

 ただし、GACのコンポーネントの場合には話が少々ややこしくなり、各ユーザーのマシンで適切なコンポーネントが登録されている必要が出てきます。私はこの場合も、ライセンスやその他の面で可能であれば、上記と同様に「SupportAssemblies」フォルダでコントロールを配布するという方法を選び、各開発者がスムーズに作業を進められるようにします。依存関係についてはドキュメントにまとめ、プロジェクトに「Readme」ファイルを同梱しておくことをお勧めします。

TortoiseSVNによるSubversionの主な操作

 ここまでで、ソース管理による作業の準備が整いました。前述のとおり、Subversionは「コピー・修正・マージ」モデルですので、明示的に指定しない限りはファイルのロックは行われず、ソースファイルは自由に修正できます。

 基本的には、ファイルの編集を普通に行えば、Subversionが変更を把握してくれます。変更を加えたファイルかどうかは、TortoiseSVNのエクスプローラ統合機能で確認できます。すなわち、ファイルのアイコンに赤色の感嘆符が付いていれば、自分が加えた変更をサーバに反映していないという意味です。

 この感嘆符は、ファイルだけでなくフォルダにも表示されます。配下に未更新の変更があるフォルダという意味です。また、感嘆符の意味を勘違いしないよう注意してください。別のユーザーが修正し� �という意味ではなく、あくまで自分自身が修正したという意味であり、コミットが必要であることを表しています。

 Subversionサーバに変更内容を反映して同期するには、図8の[SVN Commit]を選択します。図11のようなダイアログボックスが表示され、コミット処理で更新される全ファイルをその場で確認できます。また、対象外とするファイルを指定することもできます。例えば、「web.config/app.config」や、特別なビルド手順があるときのプロジェクトファイルなど、あえて更新しないファイルがある場合に役立ちます。

図11 修正を加えたファイル。変更を加えたファイルには赤色の感嘆符が表示されます。コミットが必要という意味です

 コミットでは、自分が加えた変更をサーバのリポジトリに反映します。一方、他のユーザーがリポジトリにコミットした変更をローカルに受信するには、個別ファイルまたはフォルダに対し、[SVN Update]を明示的に実行します(図12を参照)。

図12 変更されたファイルの確認。[SVN Update]では、他ユーザーが変更したリポジトリ内のファイルを確認および選択できます

 [SVN Update]では、サーバ側の最新のファイルの内容が読み込まれ、変更が加わっている部分がローカル側のファイルに自動的にマージされます。通常は、更新に関する警告や通知は表示されませんが、競合がある場合にはエラーとなり、競合を解決しないと更新は完了しません。

 大抵は、まず更新を実行し、プロジェクトを再コンパイルしたうえで、自分の修正をリポジトリにコミットするのがよいでしょう。こうすれば、マージ後の内容でビルドが失敗しないことを確認できます。また、一般論としては、少し修正を加えるごとにこまめにコミットし、リポジトリをできるだけ最新の状態に維持する方がよいでしょう。

注3

 チェックアウトの時間を短めにするほど、競合も少なくなります。


 リポジトリ側のファイルのいずれかのバージョンと、ローカル側のファイルとの違いを確認したい場合には、両者を照合して比較できる機能があります。[Check for Modifications(変更をチェック)]と[Diff]の2つのコマンドです。いずれも、変更の有無を確認できます。

 [Check for Modifications]コマンドでは、ローカル側とサーバ側とで内容に違いがあるすべてのファイルが一覧表示されます。いずれかのファイルをクリックすると、差分ビューアが表示されます。TortoiseSVNに標準装備された差分確認ツール(図13を参照)では、ローカル側とサーバ側のファイルの内容が横並びで表示され、違いを確認できます。

図13 差分の確認。標準装備の差分確認ツールでは、ローカル側のファイルとリポジトリ側のいずれかのバージョンとの違いをすばやく確認し、ローカルのファイルを更新できます

注4

 図13は標準装備の差分確認ツールですが、Beyond Compareなど、別のツールを指定することもできます。

SubversionとVisual Studio

 Visual Studioへのサポートに関しては、これと言って特筆すべき点はありません。SubversionもTortoiseSVNも、Visual Studioの外部で別個に動作するからです。従って、Visual Studioで使用するファイル同士の関係(例えば.aspxファイルとaspx.csファイルの関係)については、Subversionや TortoiseSVNは一切把握していません。各ファイルはいずれも、独立した別個の存在として扱われるため、ファイル同士の関係については自分で管理し、すべてのファイルのチェックインや更新を明示的に行う必要があります。

 プロジェクトやソリューションを扱うときには、それらに含まれる設定にも要注意です。他のユーザーで問題が生じる設定がないかどうか、念入りに確認する必要があります。例えば、SQL Serverのローカルコピーに接続するときのサーバ名が他のユーザーと違ったり、ローカルに作成したWebの仮想パスがメインアプリケーションと一致しなかったり、ローカルパスがリポジトリのプロジェクトと異なったりするケースがあります。

 場合によっては、プロジェクトファイルやソリューションファイルは、チェックアウトしたらずっとそのままにする必要があるかもしれません。ローカル設定に応じて変更した部分をリポジトリに反映させないためです。チームのすべての開発者が共同で使えるような設定にできたら理想的ですが、必ずしも可能とは限りません。.configファイルの中で各自の個別対応が必要な部分をドキュメントに残しておくと、新しく加わった開発者にも分かりやすく、非常に有効です。

Visual SVN

 Visual Studioの中でソース管理機能を直接使用したければ、VisualSVNという選択肢があります。TortoiseSVNの機能をVisual Studioに直接統合できるツールです(図14を参照)。VisualSVNは既存のSubversionのフォルダに対して動作するもので、 Visual Studioのバージョン管理プロバイダ(SCC)は使用しません。TortoiseSVNのAPIを利用して、リポジトリのデータを直接取得します。

図14 Visual Studioとの統合。VisualSVNならTortoiseSVNをVisual Studioに直接統合できます

 VisualSVNでは、TortoiseSVNの機能のほとんどをVisual Studioの中から直接利用でき、大半の操作ではTortoiseSVNのダイアログが表示されます。統合の利点の1つが、Visual Studio .NETのファイルの種類が認識され、プロジェクトファイルがソース管理に自動で追加される点です。このおかげで余分な手間が省け、Visual Studioの標準的なプロジェクトワークフローに従ってプロジェクトの構成要素を扱えます。特に楽なのが新規プロジェクトの作成です。[Add to Subversion]を選択するだけで、フォルダの作成とファイルのチェックアウトを自動で行ってくれます。

 私はVisualSVNをしばらく前から使っているものの、今でもふと気が付くと、エクスプローラのシェル統合機能を使ってしまうことがたびたびあります。その方が手っ取り早いからです。とはいえ、ファイルの状態をVisual StudioのIDEで確認できるのは確かに便利です。また、新しいファイルを頻繁に追加する場合にも役立ちます。VisualSVNがファイルの関連付けを認識し、関連する全ファイルを自動で追加してくれます。

 VisualSVNは有料のソフトウェアで、ユーザー1人につき49ドルかかります。でも、Visual Studioへの統合を必要としているなら、それだけ払う価値は十分にあります。

 Visual StudioにSubversionの機能を追加するアドインは他にもいくつかあります。その1つが、Ankhというフリーのツールです。ただ、私の所ではいくつか問題があり、ずっと前から試していません。Ankhの開発はずいぶん前に止まったようですので、もはや過去のツールと言えるのかもしれません。

開発作業を大きく変える恵みのツール

 Subversionを導入して、私の開発作業はがらっと変わりました。まさに恵みのツールです。私はこれまで、ソース管理を断続的にしか使ってきませんでした。Visual Studio用のさまざまなソース管理ツールでいろいろな問題に遭遇したからです。プロジェクト開発や個人的な作業で何種類かのツールを使ってきましたが、問題の大半は、各ツールではなくVisual Studioそのものに起因しているように感じられました。それで、しばらくソース管理を使っても、面倒になってやめてしまう、ということを繰り返してきました。

 しかし、Subversionを使い始めてからは、問題点やプロジェクトの互換性などに関して、何の不満もありません。複数のソース管理リポジトリにまたがってプロジェクトを使うのにも支障はなく、納得の出来栄えです。今では私は、すべてのプロジェクトでソース管理を利用しています。完全にローカルで行う自分用の作業であってもです。ソース管理は、面倒な厄介者ではなく、縁の下の力持ちとして、生産性を高めてくれなくてはと思います。その点、Subversionは言うことなしです。

 この記事では、Subversionの導入から基本操作まで、初歩的な内容のみを取り上げました 。Subversionは、最先端のソース管理システムに求められる高度な機能も搭載しており、必要に応じて利用できます。しかし最初のうちは、基本機能を使い込んで、操作や仕組みへの理解を十分に深めておきましょう。基本機能だけでも、ソースコードのセキュリティ強化や複数の開発者での適切な共有など、導入のメリットは極めて絶大です。



These are our most popular posts:

PCゲーミングデバイスレビュー「Razer Naga Epic」 - GAME Watch

2011年5月16日 ... ヒロイン「トキ」の友人達を紹介 バンダイナムコ、「 ... 日に延期 「第5回 秋葉原PC ゲームフェスタ」公式サイトがオープン地下のイベントステージは1日に複数社がイベント を実施予定 ... MMOゲーマーのための最上位無線マウス 「Razer Naga ... read more

勝間和代公式ブログ: 私的なことがらを記録しよう!!: 6. ためしています ...

2012年3月14日 ... Facebookでつぶやいたら、こし袋を使うといいとアドバイスをうけて、さっそくこし袋買っ てきました。 .... 端末はみんな、1日電池が保つかもたないかなので、複数の端末を 使い分けて、なんとか1日保たせます。 ... はできない仕事環境、割り切ってがしゃがしゃ とガジェットを持ち歩きながら、家の中では充電器やコードに埋もれながら、暮らすこと にしています。 .... 例えば、親しい友人のストリームはすべて読むけれども、流し読みを する人とか、あるいは特定のことについて詳しい人のストリームが作れます。 read more

[O]ニューオフィスのデュアルディスプレイ化のために調べてみた

2012年3月31日 ... マルチモニターとは、表示領域の拡大を目的としてパソコンに複数のモニター( ディスプレイ)を接続して、使用することを言う。 ... iMac君のメイン画面でXcodeや エディターを開いてプログラミングをしている最中、どうしても資料やサンプルのコード ... 例えば、iPhoneアプリ開発であれば、プログラミング言語や関数などをGoogle先生に 聞くときにでも、わざわざChromeやSafariを最前面に持ってきて閲覧し、また開発環境 に ... 友人から余っていたモニターを1つもらったので、デュアルディスプレイにしました。 read more

Facebookの「いいね!」「シェア」の違いを徹底解剖!

2011年2月8日 ... FacebookはMixiやGREEなどの日本のSNSに比べるとちょっと難しい、という印象を 持っている方も多いと思います。 ... ニュースフィードはフィード、という名前にもあるように 、RSSリーダーのように情報を集めてくるための仕組みです。 .... Facebookのユーザー は自分のウォールの他にFacebookページを複数作成することができます。 ... 今回の 記事は、友人に推奨いただけるくらい、ご満足頂けるものでしたか? read more

0 件のコメント:

コメントを投稿