すでにいくつかのプロジェクトが登録されているリポジトリにインポートする場合、リポジトリ構造はすでに決まっていることでしょう。新しいリポジトリにデータをインポートする場合には、どのようにリポジトリを構成するかを考えるのに、時間を費やす価値はあります。もっとアドバイスが必要であれば、 「リポジトリのレイアウト」をお読みください。
この章では、 Subversion のインポート(import)コマンドについて解説しています。このコマンドは、ディレクトリ階層を一度にリポジトリにインポートするよう設計されています。この動作には、いくつか欠点もあります。
「常に無視するファイル」で設定する以外に、インポートするファイルやフォルダーを選択する方法がない。
インポートしたフォルダーが作業コピーにならない。サーバーからファイルをコピーし反映するには、チェックアウトが必要である。
間違った階層のフォルダーを、リポジトリにインポートしてしまいがちである。
このような理由から、リポジトリに初期構造の /trunk /tags /branches
を作成する場合を除いて、import コマンドを使用せずに、 「その場でインポート」 で説明している2段階の手順で実行することをお勧めします。ここでは、基本的なインポートのしかたを示します。
リポジトリにプロジェクトをインポートする前に、次の作業を行ってください。
プロジェクトの構築に必要ないファイル(一時ファイル、 *.obj のようなコンパイラーが生成したファイル、コンパイルされたバイナリ、……)は削除してください。
フォルダーやサブフォルダーにファイルを整理してください。あとでファイルを削除・移動することもできますが、インポートの前にプロジェクトの構造をしっかり決めておくことを強くお勧めします。
そして Windows エクスプローラーで、プロジェクトのディレクトリ構造の最上位フォルダーを選択し、右クリックでコンテキストメニューを出してください。 → コマンドを選択すると、次のダイアログボックスが表示されます。
このダイアログで、プロジェクトのインポート先のリポジトリの場所を示すURLを入力する必要があります。リポジトリには、インポートしようとするローカルフォルダーは現れず、その中身だけが現れるということ注意してください。例えば次のような構造があるとします。
C:\Projects\Widget\source C:\Projects\Widget\doc C:\Projects\Widget\images
ここで、 C:\Projects\Widget
を http://mydomain.com/svn/trunk
にインポートすると、Widget
サブディレクトリではなく、その中のサブディレクトリが trunk
の直下に現れるので、驚くかもしれません。サブディレクトリ名は、 http://mydomain.com/svn/trunk/Widget-X
というようにURLの一部として指定する必要があります。インポートコマンドでは、リポジトリの中にサブディレクトリがない場合、自動的に作成されることに注意してください。
インポートメッセージは、ログメッセージとして使われます。
デフォルトでは、常に無視するパターンにマッチしたファイル・フォルダーはインポートされません。 無視ファイルを含める チェックボックスを使用すると、この動作を上書きします。常に無視するパターンの設定の詳細は 「一般設定」をご覧ください。
入りません。バージョン管理下の 作業コピー を取得するには、インポートしたときのバージョンをチェックアウトする必要があります。もしくは、フォルダーをその場でインポートする方法をご覧ください。
を押すと、TortoiseSVN は全てのファイルが入った完全なディレクトリを、リポジトリにインポートします。これでプロジェクトがバージョン管理下にあるリポジトリに格納されました。なお、インポートしたフォルダーは、バージョン管理下に既にリポジトリが存在していて、新しいフォルダー構造を追加する場合は、次のように操作してください。
リポジトリブラウザーを使用して、リポジトリに新しいプロジェクトフォルダーを直接作成します。標準的なレイアウトを使用している場合は、リポジトリのルート直下ではなく、 trunk のサブフォルダーとして作成した方が良いでしょう。リポジトリブラウザーは、ちょうど Windows のエクスプローラーのようにリポジトリ構造を表示しますので、どのように整理されているかを見ることができます。
新しいフォルダーを、インポートしたいフォルダーの上位層にチェックアウトします。ローカルフォルダーが空でないという警告が表示されますが、無視してください。バージョン管理下のフォルダーの中に、バージョン管理外の内容がある状態になります。
バージョン管理下のフォルダー上で svn:ignore
プロパティの設定など、必要な変更を加えることができます。
最上位のフォルダーをコミットしてください。これで新しいバージョン管理下のツリーと、既存フォルダーから作成したローカルの作業コピーを得られます。
バージョン管理下のファイルに、ユーザー別のデータを含める必要がある場合があります。つまり、それぞれのユーザー・開発者別に、環境に合わせて変更しなければならないファイルがある場合です。そういったファイルは、ユーザーがそれぞれいつでもリポジトリにコミットしてしまうことができるために、バージョン管理が難しくなります。
このような場合、テンプレートファイルを使用することをお勧めします。開発者が必要な全てのデータを含むファイルを作成し、そのファイルをバージョン管理下に置きます。開発者はそのファイルをチェックアウトします。それから、それぞれの開発者がそのファイルのコピーを作成し、名前を変更します。そうするとコピーを変更してもなんの問題もありません。
たとえば、TortoiseSVN の構築スクリプトを参照してください。このファイルの名前は default.build.user
ですが、リポジトリにはありません。default.build.user.tmpl
ファイルがあるだけです。default.build.user.tmpl
はテンプレートファイルで、開発者ごとにコピーを作成し、 default.build.user
と名前を変更するようになっています。このファイルの中には、ユーザーがどの行を編集・変更すればいいか判るように、セットアップのしかたをコメントとして追加しています。
ユーザーが不安にならないように、default.build.user
を親フォルダーの無視リストに追加してあります。つまり、Subversionのsvn:ignore
プロパティをそのファイルに設定しています。これにより(バージョン管理外のファイルのように)コミットごとに表示されることがなくなります。