70

私のチームメイトの 1 人が、履歴を保持しながら、ある SVN から別の SVN にエクスポートできるかどうか尋ねてきました。

私には、これは一般的な要求のように思えます。

では、履歴を維持しながら SVN リポジトリ間を移行することは可能ですか?

ソースでは svnadmin アクセス権がありませんが、宛先ではアクセスできることに注意することが重要です。

これがソースから各リビジョンをチェックアウトし、それを宛先にチェックインするだけで済む場合は、自動化されたプロセスがあれば問題ありません。

編集:宛先レポがWindows上にあることを忘れていました。

4

5 に答える 5

42

[編集:以下の元の返信はSVN 1.7より前のものであり、これが問題を解決する最良の方法でした(ただし、主な使用例ではありませんsvnsync)。SVN 1.7 クライアント以降では、svnrdump達成しようとしていることをより直接的に行うツールがあります)]


svnsyncを使用してソースを宛先に同期します (宛先リポジトリへの管理者アクセス、または少なくともフックを追加する方法が必要ですが、ソース リポジトリへの特別なアクセスは必要ありません)。宛先に既にリビジョンがある場合は、ソースを一時リポジトリに同期してから、 を使用svn-merge-repos.plして 2 つのローカル リポジトリをマージします。

于 2009-06-10T16:54:25.453 に答える
9

通常、これを実現する方法はsvnadmin dumpcommandです。svnadmin アクセス権がない場合は、その人にダンプを提供できるかどうか尋ねます。これにより、インポートのプロセスもはるかに簡単になります。

現在、共有リポジトリを使用していますか? これにより、リポジトリの所有者は、あなたにダンプを提供することに嫌悪感を覚える可能性があります。これは、リポジトリの一部ではなく、リポジトリ全体のコピーになるためです。

于 2009-06-10T17:01:10.697 に答える
9

私も同様の必要性があり(したがって、このページにアクセスしました)、作業を行うための独自のプログラムを作成することになりました。このツールは、まだ解決策を探している他の人に役立つかもしれないと考えました:

  • このツールは、ソース リポジトリへの管理者アクセスを必要としません。
  • 追加/削除/コピー/移動をサポートし、ノード プロパティ (svn:ignore、svn:external など) とリビジョン プロパティ (つまり、正しい作成者と日付/時刻を取得) を保持します。
  • 新しいリビジョンを増分コピーすることもできます。
  • GUI とコマンド ライン ユーティリティの両方があります。

気になる人はこちらからチェック

于 2012-02-14T16:02:37.473 に答える
8

このタスクを実行するには、git-svn (または別の SCM システム) を使用できます。

手順は次のとおりです。

1. Get a git svn clone of each repository:
    git svn clone <SVN-REPOSITORY-FROM> source-repo
    git svn clone <SVN-REPOSITORY-TO> dest-repo

 2. Create patches to be imported:
    cd source-repo/
    export commitFrom=`git log --pretty=%H | tail -1`
    git format-patch -o /tmp/mergepatchs ${commitFrom}..HEAD .

 3. Import the patches
    cd dest-repo/
    git am /tmp/mergepatchs/*.patch

参照: http://blog.neutrino.es/2012/git-copy-a-file-or-directory-from-another-repository-preserving-history/

于 2012-11-14T01:04:11.687 に答える
0

完全な変更セットを含むバージョン管理リポジトリのみが必要な場合は、bzr を bzr-svn プラグインで使用できます。svn リポジトリをチェックアウトすると、すべてが同期されます。

于 2012-02-21T22:33:59.800 に答える