既存のプロジェクトがすでにいくつか含まれているリポジトリにインポートする場合、リポジトリの構造はすでに決定されているはずです。新しいリポジトリにデータをインポートする場合は、時間をかけて構成を検討する価値があります。詳細なアドバイスについては、「リポジトリレイアウト」のセクションをお読みください。
このセクションでは、ディレクトリ階層をリポジトリに一括でインポートするために設計された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
に入っていることに驚くかもしれません。URLの一部としてサブディレクトリを指定する必要があります。 http://mydomain.com/svn/trunk/Widget-X
。 import コマンドは、リポジトリ内に存在しない場合、サブディレクトリを自動的に作成することに注意してください。
インポートメッセージは、ログメッセージとして使用されます。
デフォルトでは、グローバル無視パターンに一致するファイルとフォルダーはインポートされません。無視されたファイルを含めるチェックボックスを使用すると、この動作をオーバーライドできます。グローバル無視パターンの設定の詳細については、「一般設定」のセクションを参照してください。
バージョン管理されていませんのでご注意ください!バージョン管理されたワーキングコピーを取得するには、インポートしたバージョンをチェックアウトする必要があります。または、フォルダーをインプレースでインポートする方法については、読み進めてください。
を押すとすぐに、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
を設定して、そのファイル名を含めました。これにより、コミットごとにバージョン管理されていないものとして表示されなくなります。