SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Visual Studioと.NET開発者のためのSubversion/TortoiseSVN入門

ソース管理ツール「Subversion」と「TortoiseSVN」の環境構築手順

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

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

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

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

 手順は次のとおりです。

  1. 右クリックし、[TortoiseSVN]を選択して、[Repo-browser.]を選択します。
  2. [Create Folder]を選択して、メインリポジトリの直下に新しい最上位フォルダを作成します。フォルダ名は「SummaLp」とします。
  3. エクスプローラに戻り、「SummaLp」フォルダに移動または作成します。
  4. このフォルダを右クリックし、[Checkout…]を選択します(図4を参照)。
  5. リポジトリの最上位フォルダを選択し、対応するローカルパスを指定します(図5を参照)。
図4 ファイルのチェックアウト。ファイルをチェックアウトするには、メニューの[SVN Checkout…]を選択します。
図4 ファイルのチェックアウト。ファイルをチェックアウトするには、メニューの[SVN Checkout…]を選択します。
図5 チェックアウト。チェックアウトを実行すると、指定のローカルフォルダに対し、ファイルとフォルダがリポジトリからコピーされます
図5 チェックアウト。チェックアウトを実行すると、指定のローカルフォルダに対し、ファイルとフォルダがリポジトリからコピーされます

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 ここまで説明した手順は、最初にリポジトリを作成するときに1回だけ必要な操作でした。一方、開発者がリポジトリに接続して最新リビジョンのコピーを初めてローカルマシンに取得するときの操作はずっと簡単です。

  1. ローカルコピーの格納場所となるフォルダを決めます。
  2. 右クリックし、[SVN Checkout]を選択します(図4を参照)。
  3. リポジトリを開き、リポジトリ内のプロジェクトフォルダと、チェックアウトしたファイルを取得するローカルフォルダのパスを指定します。本記事の例では、最上位フォルダの「SummaLp」を選択します。これで[Checkout]を選択すれば、プロジェクト全体とソリューションファイルを取得できます。

次のページ
セットアップの後処理

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Rick Strahl(Rick Strahl)

ハワイのマウイ島にあるWest Wind Technologies社の社長。同社はWebおよび分散アプリケーションの開発とツールを専門にしており、Windowsサーバー製品、. NET、Visual Studio、およびVisual FoxProに主軸を置いている。RickはWest Wind Web Connection、West Wind Web Store、およびWest Wind HTML Help Bui...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3114 2008/10/30 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー