1

したがって、課題は次のとおりです。

複数のプロジェクトを含む単一のSVNリポジトリサーバーがあります。

http://server.com/svn/projectA/trunk
http://server.com/svn/projectA/branches
http://server.com/svn/projectA/tags

http://server.com/svn/projectB/trunk
http://server.com/svn/projectB/branches
http://server.com/svn/projectB/tags

ProjectAとProjectBは、実際にはProjectXの単なるコンポーネントです。誰もが今望んでいるのは:

http://server.com/svn/projectX/trunk/ProjectA
http://server.com/svn/projectX/trunk/ProjectB 
http://server.com/svn/projectX/branches/OldVersion/ProjectA 
http://server.com/svn/projectX/branches/OldVersion/ProjectB 
http://server.com/svn/projectX/tags/PreMajorChange/ProjectA 
http://server.com/svn/projectX/tags/PreMajorChange/ProjectB 

svndumpを考えていましたが、すべてのデータソートを再チェックインすると、リビジョン番号が100,000を超えることになります。それが最善の方法かどうかはわかりません(またはそれが唯一の方法かもしれません)。

それとも、svn moveのように簡単でしょうか?

4

2 に答える 2

3

を使用しsvn moveます。履歴を保持し、SVNリポジトリのサイズを最小限に増やします。最初にルートレベルでリポジトリをチェックアウトし、次に移動を行います。

mkdir -p projectX/{trunk,branches/OldVersion,tags/PreMajorChange}

svn add projectX

svn move projectA/trunk projectX/trunk/ProjectA

svn move projectA/branches/* projectX/branches/OldVersion/ProjectA

svn move projectA/tags/* projectX/tags/PreMajorChange/ProjectA

svn move projectB/trunk projectX/trunk/ProjectB

svn move projectB/branches/* projectX/branches/OldVersion/ProjectB

svn move projectB/tags/* projectX/tags/PreMajorChange/ProjectB

svn commit . -m "Restructuring"

最初にテストリポジトリで試してください(たとえば、既存のリポジトリをコピーしますsvnadmin hotcopy)。

于 2012-12-21T10:14:21.460 に答える
1

明示的に書かれていなくても、コミット履歴を保持したいと思いますか?

ProjectXの新しいリポジトリを作成し、svn:externalsプロパティを使用してプロジェクトAとBをリポジトリにリンクできます。プレーンFSのシンボリックリンクのようなものです。ここで簡単なサンプルを読むことができます。

これは、「危険な」操作を行う必要がないため、より簡単な方法です。

于 2012-06-29T14:40:58.310 に答える