我刚刚安装了 TortoiseHG v2.11 和 Mercurial-2.9
我正在尝试转换使用 TortoiseSVN 1.8 创建的本地 Subversion 存储库。
4、颠覆1.8.5
为了确保我的旧 Subversion 存储库没有任何奇怪的怪癖,我使用默认文件夹结构创建了一个名为 test_repo 的新 SVN 存储库,执行了对 test_repowc 的签出,然后向主干添加了一些文本文件,然后修改并提交了文件几次提供一些历史记录。
然后我打开 cmd.exe,导航到该文件夹并尝试
hg convert test_repo
并得到以下结果:
assuming destination test_repo-hg
initializing destination test_repo-hg repository
test_repo does not look like a CVS checkout
test_repo does not look like a Git repository
file:///C:/Users/xxxxxx/Documents/Subversion/test_repo does not look like a Subversion repository
test_repo is not a local Mercurial repository
test_repo does not look like a darcs repository
test_repo does not look like a monotone repository
test_repo does not look like a GNU Arch repository
test_repo does not look like a Bazaar repository
cannot find required "p4" tool
abort: test_repo: missing or unsupported repository
正如您所看到的,Mercurial 为我执行了 file:/// 协议,但无法识别 subversion 存储库。我尝试自己执行 file:/// 协议,使用 -s 标志指定存储库类型,在文件夹中运行 Mongoose 并作为 URL 访问存储库,但似乎都不起作用。我还尝试从工作副本而不是从存储库进行转换,但这也不起作用。
我想知道这是否与 SVN 1.7 或 1.8 引入的新 SVN 文件结构有关(某些 SVN 客户端暂时不兼容)?
有其他人使用当前版本的 TortoiseSVN 和 TortoiseHG 成功完成此操作吗?
我本来打算让这成为一个超级快速的过渡,对 DVCS 和 Mercurial 感到非常兴奋,但我已经碰壁了。我读到很多人说这非常简单,但要么我遇到了奇怪的边缘情况,要么它并不像谣言听起来那么容易。
我读过有关 HGSubversion 等其他工具的信息,我可以在其中将 SVN 克隆为 HG 存储库,但由于这些是单独的存储库,我宁愿只转换 SVN,确保一切正常,然后删除并卸载 SVN。我宁愿我的 HG 存储库不再“连接”到 SVN(HGSubversion 允许从克隆的 HG 存储库“推送”到父 SVN 存储库,对吗?)。其他工具的评价褒贬不一,所以我希望转换扩展能够正常工作。
预先感谢 - 期待 Mercurial!
EDIT:
记录 Windows 解决方案:
- 打开命令提示符
- 导航到您的 SVN 存储库(不是工作副本)
- run
svnserve -r .\ -d
- 打开另一个命令提示符
- 导航到您想要 Mercurial 存储库的位置
- 可选:运行
where hg
...如果 TortoiseHg 版本不是第一个,请编辑路径以使其成为第一个 - 此版本包含使用所需的 SVN python 绑定svn://
协议。编辑路径后重新启动 cmd 提示符。
-
run hg convert -s svn svn://localhost .\hg_repo_name
- 我使用了 computername.full.domain.name 而不是 localhost,但 localhost 也应该可以工作。
-
svn://
斜线方向就像http://
and file:///
不喜欢C:\
- 如果你的 SVN 仓库代码没有 trunk 或者你没有使用 trunk 文件夹(我的第一个仓库没有使用 trunk 文件夹,因为我不知道自己在做什么),你需要这个,它告诉 Mercurial 使用根目录作为主干:
hg --config config.svn.trunk= convert -s svn svn:\\localhost .\hg_repo_name
- 我刚刚有一个 SVN 存储库,其中我将代码文件夹导入到根目录中,但没有导入到主干中...我尝试使用上面的代码将主干设置为等于代码文件夹名称,但它不起作用...但是,当我将文件夹名称附加到 svn url 时,它起作用了:
`hg 转换 svn://%computername%.domain.com/code_folder .\hg_repo_name
祝你好运!