リポジトリへのデータインポート

インポート

すでにいくつかのプロジェクトが登録されている、既存リポジトリにインポートする場合、リポジトリ構造はすでに決まっていることでしょう。新しいリポジトリにデータをインポートする場合には、どのようにリポジトリを構成するかを考えるのに、時間を費やす価値はあります。もっと深いアドバイスが必要であれば、「リポジトリレイアウト」 をお読みください。

この節では、ディレクトリ階層をリポジトリへ一度にインポートするよう設計された、Subversion の import コマンドについて説明しています。これは動作しますが、以下のようにいくつか欠点があります。

  • 含めるファイルやフォルダを選択する方法が、共通無視設定を除いて存在しません。

  • インポートしたフォルダが作業コピーになりません。サーバからファイルをコピーし直すのに、チェックアウトしなければなりません。

  • 間違ったフォルダ階層を、リポジトリに簡単にインポートしてしまいます。

このため、import コマンドをまったく使わず、むしろ、「その場でインポート」 で説明する、2 段階法に従うのをお勧めします。しかし、あなたは今、基本的な import コマンドがどのように動作するかを説明する場にいます……

リポジトリにプロジェクトをインポートする前に、以下を行ってください。

  1. プロジェクトの構築に必要ないファイル (一時ファイル、*.obj といったコンパイラが生成したファイル、コンパイルしたバイナリ) は削除してください。

  2. フォルダやサブフォルダにファイルを構成してください。あとでファイルは削除・移動できますが、インポートの前にプロジェクトの構造をしっかり決めておくことを強くお勧めします。

今度は Windows エクスプローラのプロジェクトディレクトリ構造のトップレベルフォルダを選択し、右クリック でコンテキストメニューを出してください。TortoiseSVNインポート... コマンドを選択し、ダイアログボックスを表示します。

図4.6 インポートダイアログ

インポートダイアログ


このダイアログに、プロジェクトにインポートしたいリポジトリの場所を示す、URL を入力しなければなりません。インポートしようとするローカルフォルダ自体が現れるのではなく、その中身がリポジトリに現れるということに気づくのは重要です。例えば以下の構造があるとします。

C:\Projects\Widget\source
C:\Projects\Widget\doc
C:\Projects\Widget\images

ここで、C:\Projects\Widgethttp://mydomain.com/svn/trunk にインポートすると、Widget サブディレクトリではなく、その中のサブディレクトリが直接 trunk の中にあるのに驚くかもしれません。URL の一部として、http://mydomain.com/svn/trunk/Widget-X のようにサブディレクトリを指定する必要があります。import コマンドは、リポジトリの中にサブディレクトリがない場合、自動的に作成することに注意してください。

インポートメッセージは、ログメッセージとして使われます。

デフォルトでは、共通無視パターンにマッチしたファイル・フォルダはインポートされません。この動作を上書きするには、無視されたファイルを含む チェックボックスを使用してください。共通無視パターンの設定の詳細は 「一般設定」 をご覧ください。

OK を押すと、TortoiseSVN は全てのファイルが入った完全なディレクトリを、リポジトリにインポートします。これでプロジェクトがバージョン管理下にあるリポジトリに格納されました。インポートしたフォルダは、バージョン管理下に入らないことに注意してください! バージョン管理下の 作業コピー を取得するには、インポートしたときのバージョンをチェックアウトする必要があります。もしくは、フォルダをその場でインポートする方法をご覧ください。

その場でインポート

既にリポジトリがあると仮定したときに、新しいフォルダ構造を追加する場合、以下の手順にしたがってください。

  1. リポジトリブラウザを使用して、リポジトリに直接プロジェクトフォルダを作ってください。

  2. インポートしたいフォルダのトップで新しいフォルダをチェックアウトしてください。ローカルフォルダが空でないという警告が出ます。これでバージョン管理下にあるトップレベルフォルダに、バージョン管理外の内容があることになります。

  3. バージョン管理下のフォルダ上で TortoiseSVN追加... を使い、内容の一部または全部を追加してください。ファイルの追加や削除、フォルダへの svn:ignore 属性の設定など、必要な変更を加えることができます。

  4. トップレベルフォルダをコミットしてください。これで新しいバージョン管理下のツリーと、既存フォルダから作成したローカルの作業コピーを得られます。

特殊ファイル

時々、バージョン管理下のファイルにユーザごとのデータを含める必要があります。全てのユーザ・開発者が手元の環境をセットアップするときに、修正しなければならないファイルがあるということです。しかしそういったファイルは、ユーザがそれぞれいつでもリポジトリにコミットしてしまえるために、バージョン管理が難しいのです。

そういった場合、テンプレート ファイルを使うのをお勧めします。開発者が必要な全てのデータを含むファイルを作成し、そのファイルをバージョン管理下に置きます。開発者のそのファイルをチェックアウトします。それから、開発者ごとにそのファイルの コピーを作成 し、名前を変更します。そうするとコピーを変更してもなんの問題もありません。

たとえば、TortoiseSVN のビルドスクリプトを参照してください。このファイルの名前は TortoiseVars.bat ですが、リポジトリにはありません。TortoiseVars.tmpl ファイルがあるだけです。TortoiseVars.tmpl はテンプレートファイルで、開発者ごとにコピーを作成し、 TortoiseVars.bat と名前を変更するようになっています。このファイルの中には、ユーザがどの行を編集・変更すればいいか判るように、セットアップのしかたをコメントとして追加しています。

ユーザが不安にならないように、TortoiseVars.bat を親フォルダの無視リストに追加してあります。つまり、Subversion の svn:ignore 属性をそのファイルにセットしています。これにより (バージョン管理外のファイルのよう) コミットごとに表示されることがなくなります。