将mercurial存储库转换为svn的问题

将mercurial存储库转换为svn的问题,svn,mercurial,Svn,Mercurial,我正在尝试将mercurial(hg)存储库转换为Subversion(svn)。 (原因是我正在使用一个使用SVNKit的工具,我想在hg repo的数据上运行它。) 为此,我运行了Mercurial convert扩展: hg convert --dest-type svn mercurialrepo svnrepo 从以下输出开始,一切似乎都正常工作: initializing svn working copy 'svnrepo-wc' scanning source... sortin

我正在尝试将mercurial(hg)存储库转换为Subversion(svn)。 (原因是我正在使用一个使用SVNKit的工具,我想在hg repo的数据上运行它。)

为此,我运行了Mercurial convert扩展:

hg convert --dest-type svn mercurialrepo svnrepo
从以下输出开始,一切似乎都正常工作:

initializing svn working copy 'svnrepo-wc'
scanning source...
sorting...
converting...
4336 Some commit message
4335 Some other commit message
直到它给我消息“中止:svn退出,状态为1”:

4175 Another commit message
abort: svn exited with status 1
知道这意味着什么和/或如何解决吗

此外,看起来他转换了160个版本,但当我进入svn工作副本并执行
svn log
时,它只显示了35个版本

更新:根据DJanssens的建议添加--debug和--traceback标志:

这是最后一个进展顺利的:

4302 Removed file ProjectService in ext
source: afb26afbb72ba500fcb0b42c3c386540fbfa11fa
converting: 34/4337 revisions (0.78%)
getting files: historia4-web/src/main/webapp/META-INF/maven/be.vlaanderen.awv.historia4/historia4-web/pom.properties 1/3 (33.33%)
getting files: historia4-web/src/main/webapp/index.jsp 2/3 (66.67%)
getting files: historia4-web/src/main/webapp/js/be/vlaanderen/awv/historia4/services/ProjectService.js 3/3 (100.00%)
running: 'svn' 'delete' 'historia4-web/src/main/webapp/js/be/vlaanderen/awv/historia4/services/ProjectService.js'
D         historia4-web/src/main/webapp/js/be/vlaanderen/awv/historia4/services/ProjectService.js
running: 'svn' 'commit' '--username=schoovlo' '--file=/var/folders/q1/pxdczzk90xz28qdkk3r0krsw0000gn/T/hg-convert-SVLDzc' '--encoding=utf-8'
Sending        historia4-web/src/main/webapp/META-INF/maven/be.vlaanderen.awv.historia4/historia4-web/pom.properties
Sending        historia4-web/src/main/webapp/index.jsp
Deleting       historia4-web/src/main/webapp/js/be/vlaanderen/awv/historia4/services/ProjectService.js
Transmitting file data ..
Committed revision 35.
running: 'svn' 'propset' 'hg:convert-branch' 'HISTIV-8-projectDef' '--revprop' '--revision=35'
property 'hg:convert-branch' set on repository revision 35
在这里,它开始做一些奇怪的事情:

4301 HISTIV-8-projectDef afgerond
source: 55f79e40185fe81420008da5489e5736bb938818
converting: 35/4337 revisions (0.81%)
running: 'svn' 'commit' '--username=schoovlo' '--file=/var/folders/q1/pxdczzk90xz28qdkk3r0krsw0000gn/T/hg-convert-VBOvIH' '--encoding=utf-8'
4300 HISTIV-8 merged into default
source: dc46a9b84cebf41cd1cc1a771678a14c2cbce780
converting: 36/4337 revisions (0.83%)
最后我得到:

4175 Wat wijzigingen en optimalisaties
source: efd1149f1f767e2f3afff2bc1f5573041c446b5f
converting: 161/4337 revisions (3.71%)
getting files: historia2-data-import/src/main/java/be/vlaanderen/awv/etl/common/transformers/CachedLookupTransformer.groovy 1/2 (50.00%)
getting files: historia2-data-import/src/main/java/be/vlaanderen/awv/etl/common/transformers/SourceDestColumnMapper.java 2/2 (100.00%)
running: 'svn' 'delete' 'historia2-data-import/src/main/java/be/vlaanderen/awv/etl/common/transformers/CachedLookupTransformer.groovy' 'historia2-data-import/src/main/java/be/vlaanderen/awv/etl/common/transformers/SourceDestColumnMapper.java'
svn: E155007: '/Users/quinten/Desktop/EXPERIMENT/TEST_SELECTION_QMINO/QMINO/cloneSVN/cloneSVN-wc/historia2-data-import/src/main/java/be/vlaanderen/awv/etl/common/transformers/CachedLookupTransformer.groovy' is not a working copy
run hg source post-conversion action
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 138, in _runcatch
return _dispatch(req)
  File "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 819, in _dispatch
cmdpats, cmdoptions)
  File "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 599, in runcommand
ret = _runcommand(ui, options, cmd, d)
  File "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 910, in _runcommand
return checkargs()
  File "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 881, in checkargs
return cmdfunc()
  File "/Library/Python/2.7/site-packages/mercurial/dispatch.py", line 816, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
  File "/Library/Python/2.7/site-packages/mercurial/util.py", line 518, in check
return func(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/hgext/convert/__init__.py", line 283, in convert
return convcmd.convert(ui, src, dest, revmapfile, **opts)
  File "/Library/Python/2.7/site-packages/hgext/convert/convcmd.py", line 527, in convert
c.convert(sortmode)
  File "/Library/Python/2.7/site-packages/hgext/convert/convcmd.py", line 444, in convert
self.copy(c)
  File "/Library/Python/2.7/site-packages/hgext/convert/convcmd.py", line 412, in copy
source, self.map)
  File "/Library/Python/2.7/site-packages/hgext/convert/subversion.py", line 1257, in putcommit
self.xargs(self.delete, 'delete')
  File "/Library/Python/2.7/site-packages/hgext/convert/common.py", line 386, in xargs
self.run0(cmd, *(list(args) + l), **kwargs)
  File "/Library/Python/2.7/site-packages/hgext/convert/common.py", line 341, in run0
self.checkexit(status, output)
  File "/Library/Python/2.7/site-packages/hgext/convert/common.py", line 337, in checkexit
raise util.Abort('%s %s' % (self.command, msg))
Abort: svn exited with status 1
abort: svn exited with status 1
使用filemap创建包含以下内容的文件:

exclude whateverfileismakingtheproblem
但是,同样的问题也会在不同的文件中发生


在我看来,现在的问题是,在某一点上,有一个修订版中删除了一个文件X。但之前有一个问题,转换器出于某种原因跳过了添加了文件X的修订。所以svn抱怨说我们删除了一些本来就不需要删除的东西

我在任何方面都不是善变的专家,但我会提出一些(自己的)观察和想法

  • 您可以|必须在转换时使用
    REVMAP
    附加参数
  • REVMAP是一个简单的文本文件,它将每个源提交ID映射到每个修订的目标ID

    在理想的转换情况下(完全转换,无错误),REVMAP文件的左列将与

    hg log -T "{node}\n" -r :
    
    我的部分REVMAP和SRC回购日志

    2c96d0cff382e13bb39d1b064ed098cbab230142 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@1
    3f05a3b07a29e8772e22cca847ce07e461d972f5 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@2
    696aa5701fd7822fec76cc1b7b203ad1772e38c8 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@3
    2f09429039a6d062d8135f652bbcb8be7a798443 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@4
    97419f57d7db28ace15066df7fb7ec7692536a30 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@5
    
    2c96d0cff382e13bb39d1b064ed098cbab230142
    3f05a3b07a29e8772e22cca847ce07e461d972f5
    696aa5701fd7822fec76cc1b7b203ad1772e38c8
    2f09429039a6d062d8135f652bbcb8be7a798443
    97419f57d7db28ace15066df7fb7ec7692536a30
    
    在您的情况下,它将在第一个“坏”变更集被修剪,但在REVMAP(将其与log进行比较)中,您将能够找到跳过的早期变更集

  • Convert扩展只能转换部分回购(
    -r
    参数),如果按顺序使用,则

    hg convert--dest type svn SRC DST REVMAP-r N

  • DST
    REVMAP
    未更改,convert执行增量转换和
    >
    到REVMAP的附加转换,而不是在每个步骤中覆盖它。也就是说,我用单个
    hg convert--dest type svn SRC DST REVMAP
    hg convert--dest type svn SRC DST REVMAP-r(10 | 20 | 30 | 40)
    转换了40个变更集SRC,得到了相同的DST。通过这种方式,您可以尝试仅转换有问题的(在步骤1中标识为跳过的)修订版,而无需重复所有工作(使用
    -r$skipped-1
    转换一次,并在以后多次使用
    -r$skipped
    进行转换)。也许你会用这些“可跳过”的变更集来填充bug报告,作为你研究的结果(作为最后手段),Mercurial开发人员将能够改变他们身边的某些东西

  • 如果您的任务不是准备convert的奇点,而是获得结果(可用的SVN repo),您可以考虑使用
    hgsubversion
    将其“转换”到SVN,并推送到SVN存储库(创建空的SVN repo,使用除
    文件:///code>之外的任何访问协议发布它,如果需要,可以使用
    -f
    推送到repo)“存储库”/)

  • 错误代码非常隐晦,如果使用
    --debug
    --traceback
    选项,您可能会得到更详细的信息?尝试了--debug--traceback问题,使问题更加明确,但仍然不知道如何解决。遗憾的是,我也不是这方面的专家。我在年遇到了svn的部分问题回顾过去并记住,
    --debug
    选项可以节省一些时间。我们希望专家能对此问题有所了解。我想额外的调试信息只能帮助加快这个过程。祝你好运!@Quintensetenses:
    中止:svn退出状态为1
    只意味着当mercurial调用svn时,svn报告了一个错误r、 没有什么特别的,只是一个错误。错误是,
    svn:E155007:“/Users/quinten/Desktop/TEST\u SELECTION\u QMINO/QMINO/cloneSVN/cloneSVN wc/historia2 data import/src/main/java/be/vlanderen/awv/etl/common/transformers/cachedlookupttransformer.groovy”不是一个工作副本,但我想你已经解决了。那条路是一个主管吗y?这与mercurial不存储空目录有关吗?
    
    2c96d0cff382e13bb39d1b064ed098cbab230142 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@1
    3f05a3b07a29e8772e22cca847ce07e461d972f5 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@2
    696aa5701fd7822fec76cc1b7b203ad1772e38c8 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@3
    2f09429039a6d062d8135f652bbcb8be7a798443 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@4
    97419f57d7db28ace15066df7fb7ec7692536a30 svn:d4a602fb-2afa-8b43-af74-725bfcbd86c9@5
    
    2c96d0cff382e13bb39d1b064ed098cbab230142
    3f05a3b07a29e8772e22cca847ce07e461d972f5
    696aa5701fd7822fec76cc1b7b203ad1772e38c8
    2f09429039a6d062d8135f652bbcb8be7a798443
    97419f57d7db28ace15066df7fb7ec7692536a30