複数のSVNプロジェクトのマージ[複製]
-
22-07-2019 - |
質問
ソースが単一のトップレベルディレクトリでインポートされていないプロジェクトのsvnリポジトリを管理しています。その結果、1つではなく約15の個別の「プロジェクト」があります。変更履歴を維持しながらこれらを1つのフォルダーにマージするにはどうすればよいですか?
*ヒント:この場合、svn moveは機能しません。
[編集] whoops、複数のSVNリポジトリを1つにまとめる
解決
1つのリポジトリのすべての履歴を保持する必要がない場合は、1つのプロジェクトのリポジトリの下に新しいディレクトリを作成してから、もう1つのリポジトリをインポートできます。
両方の履歴を保持する場合は、「svnadmin dump」を使用して1つのリポジトリをダンプし、「svnadmin load」を使用して他のリポジトリにロードできます。リビジョン番号はオフになりますが、履歴は残ります。
他のヒント
たぶん、私は分散バージョン管理ハンマーを使いすぎていて、この時点で見えるのは分散爪です。ただし、これはおそらくDVCSの仕事であると言わざるを得ません。
git-svnまたはそのようなものをいじってみます。各「プロジェクト」をインポートします;独自のgitリポジトリに入れて、互いからgit pullします。競合を解決し、すべてが完了したら、履歴をSubversionにインポートします。
しかし、とにかくすべてのリポジトリをマージし終えたら、分散コントロールを使用する方が良いかもしれません...
svn:externalsを使用して他のすべてのプロジェクトを指し、適切なサブディレクトリに配置する新しいトップレベルプロジェクトを作成できます。
- 開発者は、新しいトップレベルプロジェクトをチェックアウトするだけで済みます(svnは自動的にsvn:externalsに従い、他のプロジェクトを取り込みます)
- 完全なバージョン履歴が保持され、新しい変更が関連するサブプロジェクトに自動的にコミットされます
- 実装に約5分かかります(新しいトップレベルプロジェクトを作成し、
svn propedit svn:externals top_dir
を実行します)。
所属していません StackOverflow