7

Subversion で新しいリポジトリを作成するための私の通常のワークフローは、新しいリポジトリを作成し、リポジトリ ルートのチェックアウトを行い、ブランチ タグとトランク フォルダーを作成し、初期ファイルをトランクに配置することです。次に、この「初期インポート」のコミットを行い、チェックアウトしたリポジトリをハード ドライブから削除し、トランクのチェックアウトを行います。それから私は仕事を始めることができます。

ただし、大規模なインポートを処理する場合、数百メガバイト、およびオフサイトのバージョン管理ホスティング (http ベース) を考えると、この最初のインポートはコミットするのにかなりの時間がかかる可能性があります。さらに悪いことに、コミットした後、この巨大なトランクをもう一度チェックアウトする必要があります。

すでに存在するデータをもう一度チェックアウトすることなく、トランクのローカル コピーを使用する Subversion の方法はありますか?

4

5 に答える 5

14

あります - これは「インプレース インポート」と呼ばれ、ここの Subversion FAQ で説明されています。

http://subversion.tigris.org/faq.html#in-place-import

実際に行っていることは、リポジトリに新しい空のプロジェクトを作成し、空のプロジェクトをローカル フォルダーにチェックアウトして、フォルダーを作業コピーに変換し、(既存の) すべてのファイルをその「空の」プロジェクトに追加することです。そのため、svn commit を実行するとリポジトリに追加されます。

于 2008-10-05T22:51:30.633 に答える
4

「インプレースインポート」手順に同意し、TTB構造のスクリプトを使用することにも同意します(両方に賛成)。

ちょっとしたヒント:

http(s)を使用する場合、バージョン履歴を表示する時間は追加されたエントリの数に比例するため、1回のコミットで膨大な数(1万)のファイルをインポートしないでください。この動作の理由は、apacheが追加されたすべてのパスをsvnaccessファイルに対して認証する必要があるためです(もちろん、パスベースの認証を有効にした場合のみ)。これにより、すべてのファイルがこの大きな回転をsvnログで待機する必要があるため、リポジトリが使用できなくなる可能性があります。

大量のインポートをディレクトリレベルで分割する必要があります

于 2008-10-06T00:34:50.580 に答える
2

svn checkout --force を使用すると、既存のパスを「超えて」作業コピーをチェックアウトできます。古いファイルを保持し、リポジトリにのみあるファイルを追加します。

リポジトリを作成する場合: ほとんどの Subversion ディストリビューション (例: SlikSVN )で利用できる 'svnmucc' コマンドを使用して、単一のコミットでリポジトリに対して複数の mkdir コマンドを実行できます。

ヘルプが必要な場合は、引数なしで svnmucc と入力してください。

于 2008-10-06T11:23:23.640 に答える
2

私は通常、「svn mkdir」を使用して、リポジトリを作成した直後にトランク/タグ/ブランチをサーバー上に直接作成します。次に、空のトランクをチェックアウトし、最初のファイルをそのディレクトリに移動し、それらを追加してコミットし、作業を開始します。

于 2008-10-05T23:12:33.163 に答える
1

1 つのフォルダーをチェックアウトし、ファイルをそのフォルダーにコピーした場合は、and を実行svn addsvn commitます。ファイルを削除して再チェックアウトする必要はありません。

ファイルをその場で使用します。説明どおりにコミットしたら、作業する準備が整います。

于 2008-10-05T22:47:53.683 に答える