私の経験では、たくさんのプロジェクトと長年の歴史を持つ実際のSubversionリポジトリの変換はもう少し複雑です。主な理由は、Subversionでは、すべてのものに対して1つの巨大なリポジトリを用意しても問題がないためです。それどころか、Mercurialリポジトリはもっときめ細かいものにすることをお勧めします。
次のSubversionリポジトリレイアウトを想定しています。
├── project1
│ ├── branches
│ ├── tags
│ └── trunk
│ ├── package1
│ └── package2
└── project2
変換は、独自の履歴を持つ個別のMercurialリポジトリに変わる必要がpackage1
あります。package2
この回答では、シングルパスに興味がありますが、タグとブランチの変換も可能です。
準備
私は通常、高速接続のリモートサーバーで変換を行います。Debianファミリの場合、次のパッケージが必要です。
apt-get install mercurial subversion python-subversion
次に、拡張機能の変換を有効にする必要があります。
echo -e "[extensions]\nhgext.convert=" >> ~/.hgrc
Windowsでは、前提条件を満たしていることを確認してください。
実行
リモートのsubversionリポジトリから直接変換を実行しようとすると、数時間かかる可能性があるため、以下ではプロジェクトのパスのミラーを作成することに注意してください。その後、各変換は数秒から数分の問題です。
cd /tmp
svnadmin create svn-mirror
# on Windows you may need to look at comments to accepted answer
echo '#!/bin/sh' > svn-mirror/hooks/pre-revprop-change
chmod +x svn-mirror/hooks/pre-revprop-change
svnsync init file:///tmp/svn-mirror svn://subversion.repo/project1
svnsync sync file:///tmp/svn-mirror
echo 'include project1/trunk/package1' > package1-map
echo 'rename project1/trunk/package1 .' >> package1-map
hg convert --filemap=package1-map svn-mirror package1
echo 'include project1/trunk/package2' > package2-map
echo 'rename project1/trunk/package2 .' >> package2-map
hg convert --filemap=package2-map svn-mirror package2
次に、パッケージディレクトリ内で、RhodeCodeなどのMercurialクライアントまたはリポジトリマネージャを使用して実行hg serve -p 8080
およびクローンを作成できます。http://your.host:8080