SVN上的HG转换给出;看起来不像Subversion存储库;

SVN上的HG转换给出;看起来不像Subversion存储库;,svn,mercurial,tortoisesvn,tortoisehg,mercurial-convert,Svn,Mercurial,Tortoisesvn,Tortoisehg,Mercurial Convert,我刚刚用Mercurial-2.9安装了OrtoiseHGV2.11 我正在尝试转换我的本地Subversion存储库,这些存储库是用TortoiseSVN 1.8创建的。 4,Subversion 1.8.5 为了确保我的旧Subversion存储库没有任何奇怪的怪癖,我使用默认文件夹结构创建了一个名为test_repo的新SVN repo,对test_repowc执行签出,然后将一些文本文件添加到主干中,然后修改并提交了几次文件以提供一些历史记录 然后,我打开cmd.exe,导航到该文件夹并

我刚刚用Mercurial-2.9安装了OrtoiseHGV2.11

我正在尝试转换我的本地Subversion存储库,这些存储库是用TortoiseSVN 1.8创建的。 4,Subversion 1.8.5

为了确保我的旧Subversion存储库没有任何奇怪的怪癖,我使用默认文件夹结构创建了一个名为test_repo的新SVN repo,对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为我创建了文件:///协议,但无法识别subversion存储库。我尝试过自己编写文件:///协议,用-s标志指定存储库类型,在文件夹中运行Mongoose,并以URL的形式访问存储库,但似乎都不起作用。我也尝试过从工作副本而不是从存储库转换,但这也不起作用

我想知道这是否与SVN 1.7或1.8引入的新SVN文件结构有关(一些SVN客户端暂时不兼容)

其他人是否有幸使用了当前版本的陆龟VN和陆龟Hg

我本来打算以超快的速度过渡,对DVCS和Mercurial感到兴奋,但我已经撞到了墙。我读到很多人说这非常简单,但要么我有一个奇怪的边缘案例,要么这不像谣言听起来那么容易

我读过其他工具,如HGSubversion,我可以将我的SVN克隆为HG repo,但由于这些是单独的存储库,我宁愿转换SVN,确保一切正常,然后删除并卸载SVN。我不希望我的HG存储库仍然“连接”到SVN(HGSubversion允许从克隆的HG repo“推送”到父SVN repo,对吗?)。其他工具有混合评论,所以我希望转换扩展能够正常工作

提前感谢-期待Mercurial

编辑:

记录Windows解决方案:

  • 打开命令提示符
  • 导航到您的SVN存储库(不是工作副本)
  • 运行
    svnserve-r.\-d
  • 打开另一个命令提示符
  • 导航到您希望mercurial回购的位置
  • 可选:运行
    where hg
    。。。如果OrtoiseHG版本不是第一个,请编辑路径使其成为第一个-此版本包括使用
    SVN://
    协议所必需的SVN python绑定。编辑路径后重新启动cmd提示符
  • 运行
    hg convert-s svnsvn://localhost .\hg\u回购协议名称

    • 我用computername.full.domain.name代替了localhost,但是localhost也应该可以工作
    • svn://
      斜杠方向类似于
      http://
      file://
      而不像
      C:\
    • 如果您的SVN repo代码没有主干,或者您没有使用主干文件夹(我没有使用我的第一个repo,因为我不知道我在做什么),那么您需要这个,它告诉mercurial使用根目录作为主干:
    hg--config config.svn.trunk=convert-s svn svn:\\localhost。\hg\u repo\u name

    • 我刚刚有一个SVN repo,在那里我将一个代码文件夹导入到根目录中,但没有导入到主干目录中。。。我尝试使用上面的代码将主干设置为代码文件夹名称,但它不起作用。。。但是,当我将文件夹名称附加到svn url时,它起了作用:
    `hg convert svn://%computername%.domain.com/code\u文件夹。\hg\u repo\u名称

  • 祝你好运

    与各州一样

    先决条件:

    Subversion的Python绑定

    而且Python绑定似乎还没有(至少)在1.8+存储库中使用ra_local进行更新

    你有两个选择

    • 创建1.7兼容的本地SVN存储库,以便以后转换
    OldRepo>svnadmin创建--兼容版本“1.7”。

    使用HGSubversion克隆OldRepo后会得到相同的结果

    >hg clone file:///Z:/OldRepo HG-Repo
    [r1] Badger: Create initial state
    pulled 2 revisions
    updating to branch default
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
    
    • 使用任何服务器访问1.8+存储库(SVN服务是最简单的方法)。我没有尝试svn://repository,但测试了1.8subversion的远程http服务存储库
    只是样品

    hg clone https://subversion.assembla.com/....
    ...
    25 files updated, 0 files merged, 0 files removed, 0 files unresolved
    

    谢谢,我正在使用svnserve来主持回购,然后允许hg转换工作。我确实需要使用svn://才能让它工作。谢谢!刚刚花了一个多小时让它再次工作。。。原来我的问题是我在工作副本中而不是在存储库中运行svnserve(我糟糕的文件夹命名很容易出错)-如果有人这样做,请不要犯我的错误!这个解决方案对我不起作用!如果其他人也有同样的问题,就试着在类似Ubuntu的虚拟机上进行转换。我做到了,一有机会就成功了!我猜Windows上的问题与Subversion的Python绑定有关。另一种解决方案(如果你手头有可能更快)是使用Linux虚拟机来完成这项工作。
    hg clone https://subversion.assembla.com/....
    ...
    25 files updated, 0 files merged, 0 files removed, 0 files unresolved