Answers:
我只需要自己解决这个问题。我有一台装有独立Windows Server的Windows XP计算机,该服务器托管了VisualSVN Server。
我还安装了TortoiseHG以及CollabNet Subversion命令行客户端。
<Enable Convert Extension w/ Tortoise Hg 2>
非常感谢bgever在评论中指出,使用TortoiseHg 2.0,启用convert扩展比以往更加容易。正如他所说
使用TortoiseHG 2.0,它变得更加简单:从“开始”菜单启动TortoiseHG Workbench。选择文件->设置。从列表中选择扩展。选中“转换”复选框,然后单击“确定”。而已!无需尝试再生成配置文件并在文件系统中搜索它。– bgever 3月11日7:56
</Enable Convert Extension w/ Tortoise Hg 2>
<Enable Convert Extension Manually>
要将存储库从SVN转换为HG,我遵循以下步骤:
1)打开C:\ Program Files \ TortoiseHg \ Mercurial.ini
编辑
仅供参考-Tortoise Hg已将此文件迁移到
该文件将大部分为空,您只列出您要覆盖的文件即可。如果是这样,只需将这两行添加到文件的末尾即可:
[extensions]
convert =
2)搜索以开头的行
[扩展名]
3)在它下面,您将看到一个关键字列表,每行用分号(;)注释掉
4)找到提示
; convert =
并删除分号,使其读取
转换=
</Enable Convert Extension Manually>
5)打开命令提示符,然后导航到要在其中创建新hg文件夹的目录(该过程将在打开命令提示符的目录中创建一个名为yoursvnreponame-hg的新文件夹)。
6)使用此命令
hg转换文件:/// y:/ yoursvnreponame
我发现转换工具可能会在网络存储库中出现问题,因此我不得不将驱动器映射到它,但这对我来说很好。
要将SVN Repo转换为HG Repo并将其复制到其他服务器,您需要做一些事情。
convert
扩展名添加到Tortoise。从开始菜单启动TortoiseHG Workbench。选择File -> Settings
。Extensions
从列表中选择。选中convert
复选框,然后单击确定。首先转换...
\\server\folder
不要映射SVN Repo文件夹本身。请映射它上方的文件夹)给映射的驱动器一个字母,例如Y:\
CD /D Y:\
Y:\
提示符下键入:( hg convert y:/RepoName
使用当前回购的名称)请注意正斜杠和反斜杠。命令中的一个是正斜杠。另外,如果名称中包含空格,请将该名称放在引号中。(即Y:/"My Repo folder"
)其次是克隆……
File -> Clone Repository
init
使用第一个存储库?
仍然没有人没有提及hgsubversion(扩展维基),它几乎可以做到(几乎没有头疼)(不包括罕见的情况和特定的树)。
只需添加扩展名,启用它并添加hg clone SVN_REPO
到本地商品库
如何将Subversion存储库转换为Mercurial?
您必须安装svn-win32-1.4.6命令行工具,然后将它们添加到您的路径中。然后,您必须启用转换扩展名。此时,您应该可以使用'
hg convert
'命令进行转换。请将有关转换扩展名的问题/疑问直接发送到Mercurial邮件列表或#mercurial
上irc.freenode.net
。
因此,这似乎有可能-我正在使用Linux,所以我没有尝试过。
我只是将具有HTTP auth的远程SVN存储库转换为Mercurial存储库,然后告诉我,关于如何执行此操作的文档并不多。我必须下载Mercurial源码,并使用源码包独立安装它,这样SVN绑定才能正确运行。
我安装它像:
python setup.py install
这在我的Server 2003机器上工作得很好。我现在可以通过执行以下操作来正确转换SVN存储库:
python c:\python26\scripts\hg convert <remote repo>
Mercurial站点上的ConvertExtension文档并不十分清楚,但是它确实说明了这一点:
无法将Subversion绑定安装到[Mercurial]的内置Python库中。因此,您需要使用安装在独立Python之上的Mercurial
因此,现在我只使用独立版本进行转换,而使用TortoiseHg进行实际的VCS工作。
迟到总比不到好 ...
两个答案一个的价格...
如果它是公开的开放源代码存储库,则可以使用http://svn2github.com/add/将其复制到GitHib大约半小时,然后将其导入到Hg中。
使用的好处hg convert
是可以恢复。将SVN转换为Hg可能需要几天时间。如果停止此操作,它将从中断处恢复。
下面是我写的一个批处理文件,因为Codeplex SVNbridge垃圾。此示例中的回购确实花了几天的时间来获取全部历史记录(我在澳大利亚,所以延迟可能是一个因素)。我想认为它给某处的TFS服务器带来了良好的反响。
如果批处理文件恰好是实际仍在使用SVN的唯一文件,则可以随时运行该批处理文件以从SVN源中提取更新。我尚未对其进行测试,因此请查看如果执行此操作会发生什么情况,所以如果您是我,那么如果您要编辑存储库,则将放弃原始分支。
的robocopy shamap
东西是,如果你克隆回购汞保持SVN历史,shamap是短暂的-检查(我做的是一个新的分支)的批处理文件和shamap。
批次...
@echo off
mode con:cols=100 lines=800
:: Change the SVN remote name here
::
set remote=https://cinch.svn.codeplex.com/svn
::
title Fetching SVN from %remote%. This could take...DAYS
echo .
echo Fetching SVN checkins from %remote%
echo .
echo Dependencies: Tortoise Hg and hg.exe in the Path would be ideal.
echo using hg convert
echo .
echo First, I will make a backup of shamap in the hg repo folder.
echo If shamap in .hg\ is newer then it will be copied to the repo.
echo You should commit it so hg clones of this repo work with this.
echo Commit this .BeeyATch file as well.
echo shamap keeps track of what has been fetched from SVN.
echo ok, that ends the educational part of this script...
echo Now I will fetch SVN changes from
echo %remote%
echo ...
echo ...(this could take quite some time)...
echo ...DAYS...yes...DAYS
echo ...especially if it's fecking Codeplex SVN...
echo .
echo If this craps out just run it again - it will resume from where it left off.
echo and fetch the rest...eventually
echo .
echo Control C to abort or any other key to start:
echo .
pause
echo .
:: http://mercurial.selenic.com/wiki/ConvertExtension <== see for details of shamap
:: copy the shamap from the original convert into the .hg folder unless it is already there & newer
:: don't panic if shamap is much bigger than the original - diff it to see why
robocopy .\ .\.hg\ shamap /XO
robocopy .\.hg\ .\ shamap /XO
echo .
hg convert --verbose --debug %remote% "%CD%"
echo .
echo .
echo Finished fetching from %remote%
title Finished fetching from %remote%
echo Any key to Exit
echo .
pause
exit
使用Mercurial 的convert
扩展名:
convert=
到[extensions]
.hgrc部分:
[扩展名]
convert =
sudo apt-get install python-subversion
hg convert
命令
hg convert -h
求救hg convert http://[svnserver]/[Project] --source-type svn [DestinationDir]
请参见注释2)hg push https://[mercurialserver]/[Project]
注意:您甚至可以重复执行hg convert命令,以包含在上一次转换后在svn存储库中所做的新更改。
注2:如果hg convert无法使用,http://
或者svn://
您可以先签出Subversion存储库(或更新现有的存储库),然后使用本地签出进行转换;例:hg convert [DirectoryOfLocalCheckout] --source-type svn [DestinationDir]