在Windows上将CVS转换为Hg

时间:2014-10-27 14:48:42

标签: mercurial cvs

我试图将我们公司的CVS转换为Mercurial,但到目前为止还没有成功。应保留远程文件历史记录。

我尝试了RepositoryConversion - Mercurial

中描述的转换工具

转换扩展名

e:\Hg>hg convert -s CVS H:\Cvs
assuming destination cvs-hg
initializing destination cvs-hg repository
abort: CVS: invalid source repository type

发生了什么事?!

cvs2hg

看起来很有希望,但在最后一刻出错了。

python cvs2hg -v --encoding=UTF8 --hgrepos=e:/Hg h:/Cvs

10分钟和9英里文本后的结果:

----- pass 14 (SortSymbolOpeningsClosingsPass) -----
Sorting symbolic name source revisions...
Done
Time for pass14 (SortSymbolOpeningsClosingsPass): 0.150 seconds.
Deleting cvs2svn-tmp\statistics-13.pck
Deleting cvs2svn-tmp\symbolic-names.txt
----- pass 15 (IndexSymbolsPass) -----
Determining offsets for all symbolic names...
  VERSION_0_22
  VERSION_0_18
  VERSION_0_11
  VERSION_0_9
  VERSION_0_5
  VERSION_0_1
Done.
Time for pass15 (IndexSymbolsPass): 0.130 seconds.
Deleting cvs2svn-tmp\statistics-14.pck
----- pass 16 (OutputPass) -----
Traceback (most recent call last):
  File "cvs2hg", line 91, in <module>
    hg_main(os.path.basename(sys.argv[0]), sys.argv[1:])
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\main.py", line 135, in hg_main
    main(progname, run_options, pass_manager)
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\main.py", line 96, in main
    pass_manager.run(run_options)
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\pass_manager.py", line 181, in run
    the_pass.run(run_options, stats_keeper)
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\passes.py", line 1771, in run
    svn_commit.output(Ctx().output_option)
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\svn_commit.py", line 238, in output
    output_option.process_primary_commit(self)
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\hg_output_option.py", line 291, in process_primary_commit
    svn_commit, [parent1, parent2], filenames, getfilectx, lod)
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\hg_output_option.py", line 715, in _commit_primary
    return self._commit(svn_commit, parents, filenames, getfilectx, lod)
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\hg_output_option.py", line 733, in _commit
    return self._commit_memctx(mctx)
  File "c:\Portable progs\cvs2svn-19b322d42b1f\cvs2svn_lib\hg_output_option.py", line 739, in _commit_memctx
    node = self.repo.commitctx(mctx)
  File "mercurial\localrepo.pyo", line 63, in wrapper
  File "mercurial\localrepo.pyo", line 1399, in commitctx
  File "mercurial\localrepo.pyo", line 1193, in _filecommit
  File "mercurial\filelog.pyo", line 76, in cmp
AttributeError: 'bool' object has no attribute 'startswith'

Tailor,fromcvs

最初被链接腐烂阻止,但经过谷歌搜索后,变成仅限Linux的工具(?)。我确实有cygwin,但我没有任何编译源发行版的好经验。

HG-CVS-进口

链接腐烂,也无法找到任何东西。关于最后三个工具,我在Would you migrate from cvs to svn or directly to git or hg?上阅读:&#34; Tailor扩展,hg-cvs-import,fromcvs似乎是旧代码,不再维护。&#34;


我也尝试了Convert cvs to mercurial上的技巧,尽管它可能只保留了本地文件历史记录,但结果与我第一次尝试的结果相同。

我错过了其他任何工具?也许是一个用户友好的Windows应用程序?

1 个答案:

答案 0 :(得分:1)

我成功了 cvs2hg Mercurial 2.0来源(不是更新的版本)

  • 下载Mercurial 2.0源代码,
  • Mercurial文件夹(位于Mercurial-2.0文件夹中)复制到cvs2svn文件夹,
  • 进入cvs2svn/Mercurial/pure
  • 将内容复制到cvs2svn/Mercurial
  • 执行python cvs2hg