質問

ソースが単一のトップレベルディレクトリでインポートされていないプロジェクトのsvnリポジトリを管理しています。その結果、1つではなく約15の個別の「プロジェクト」があります。変更履歴を維持しながらこれらを1つのフォルダーにマージするにはどうすればよいですか?

*ヒント:この場合、svn moveは機能しません。

[編集] whoops、複数のSVNリポジトリを1つにまとめる

役に立ちましたか?

解決

1つのリポジトリのすべての履歴を保持する必要がない場合は、1つのプロジェクトのリポジトリの下に新しいディレクトリを作成してから、もう1つのリポジトリをインポートできます。

両方の履歴を保持する場合は、「svnadmin dump」を使用して1つのリポジトリをダンプし、「svnadmin load」を使用して他のリポジトリにロードできます。リビジョン番号はオフになりますが、履歴は残ります。

ここからコピー: http://subversion.tigris.org/faq.html #multi-merge

他のヒント

たぶん、私は分散バージョン管理ハンマーを使いすぎていて、この時点で見えるのは分散爪です。ただし、これはおそらくDVCSの仕事であると言わざるを得ません。

git-svnまたはそのようなものをいじってみます。各「プロジェクト」をインポートします;独自のgitリポジトリに入れて、互いからgit pullします。競合を解決し、すべてが完了したら、履歴をSubversionにインポートします。

しかし、とにかくすべてのリポジトリをマージし終えたら、分散コントロールを使用する方が良いかもしれません...

svn:externalsを使用して他のすべてのプロジェクトを指し、適切なサブディレクトリに配置する新しいトップレベルプロジェクトを作成できます。

  • 開発者は、新しいトップレベルプロジェクトをチェックアウトするだけで済みます(svnは自動的にsvn:externalsに従い、他のプロジェクトを取り込みます)
  • 完全なバージョン履歴が保持され、新しい変更が関連するサブプロジェクトに自動的にコミットされます
  • 実装に約5分かかります(新しいトップレベルプロジェクトを作成し、 svn propedit svn:externals top_dir を実行します)。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top