提问的智慧SVN版 - 提问者必读
返回列表 回复 发帖

[原创] cvs2svn 把CVS档案库转换为SVN档案库

cvs2svn工具是用来把CVS档案库转换为SVN档案库的。

在linux下的操作
1).安装
下载:Python 2.0  
地址:http://www.python.org/
说明:执行csv2svn中Python 脚本所需要的环境
安装:
      cd /usr/software
      tar -zxf Python-2.4.1.tgz
      cd Python-2.4.1
      ./configure
      make
      make install
      make clean

下载:RCS
地址:http://www.cs.purdue.edu/homes/trinkle/RCS/
说明:用来读CVS档案库
安装:
      cd /usr/software
      tar -zxf rcs-5.7.tar
      cd rcs-5.7
      ./configure
      make
      make install
      make clean
注意:make操作只能由非root用户执行

下载:GNU 工具
地址:http://www.gnu.org/software/coreutils/
说明:可能FreeBSD系统已经有了
安装:
      cd /usr/software
      tar -zxf coreutils-5.2.1.tar.gz
      cd coreutils-5.2.1
      ./configure
      make
      make install
      make clean

下载:cvs2svn
地址:http://cvs2svn.tigris.org/
说明:
安装:
      cd /usr/software
      tar -zxf cvs2svn-1.2.1.tar.gz
      cd cvs2svn-1.2.1
      make install
      make clean

2).使用cvs2svn把CVS档案库转换为SVN档案库
  使用cvs2svn工具根据需要可以几种转换方式供选择的。默认的方式为完全转换,我们就是采用这样方式的。
  进入csv2svn所在的目录:
   cd /usr/software/cvs2svn-1.2.1
   ./cvs2svn --svnadmin=/usr/local/bin/svnadmin --encoding=gb2312 --fs-type=fsfs -s /usr/svn/repos/CVSRepos_JSP /usr/software/CVSRepo_JSP
   
   参数说明:
   --svnadmin svndadmin的路径,创建SVN档案库时需要
   --encoding 所采用的编码,默认为ascii
   --fs-type  档案库的类型fsfs或bdb
   -s         SVN档案库的位置
   最后一个是要转换CVS档案库的位置

在windows下的操作

1 ) 安装

下载:python2.4
地址:http://www.python.org/download/
说明:下载最新版本的Python for Windows的安装程序python-2.4.1.msi,按照默认的方式安装Python,假设安装目录是C:\Python。

下载:cvs2svn
地址:http://cvs2svn.tigris.org/servle ... tList?folderID=2976
说明:用WinRAR解压到任一个目录下。打开命令行窗口转到cvs2svn所在的目录先测试一下python,执行C:\python\python cvs2svn,这时候会输出cvs2svn的帮助信息。

下载:UnxUtils.zip
地址:http://unxutils.sourceforge.net/
说明:由于cvs2svn用到了GUN sort工具,因此必须下载UnxUtils.zip,把该压缩包下的usr/local/wbin/sort.exe文件解压到cvs2svn目录中。

下载:rcs57pc1.zip
地址:http://www.cs.purdue.edu/homes/trinkle/RCS/
说明:需要用到RCS的一个工具co.exe,下载rcs57pc1.zip,把该压缩包中的bin/win32下的rcslib.dll以及co.exe这两个文件同样解压到cvs2svn目录中。

2).使用cvs2svn把CVS档案库转换为SVN档案库

接下来我们开始转换资源库,输入以下命令
C:\Python\python cvs2svn –s d:\svn\repository\project1 \project1

其中我们假设project1是原有CVS资源库中的一个项目。
下面是在我的机器上转换完毕后cvs2svn显示详细的统计信息:

cvs2svn Statistics:
------------------
Total CVS Files:                 7
Total CVS Revisions:             7
Total Unique Tags:               0
Total Unique Branches:           0
CVS Repos Size in KB:         2261
Total SVN Commits:               2
First Revision Date:    Sat Sep 03 15:05:26 2005
Last Revision Date:     Sat Sep 03 15:05:27 2005
------------------
Timings:
------------------
pass 1:     0 seconds
pass 2:     0 seconds
pass 3:     0 seconds
pass 4:     0 seconds
pass 5:     0 seconds
pass 6:     0 seconds
pass 7:     0 seconds
pass 8:     1 second
total:      3 seconds

转换完毕后我们用浏览器打开 http://localhost/svn/project1 即可看到SVN仓库

注意如果要用 --encode=gb2312,必须使用python2.4以上版本
1

评分次数

  • PCplayer

赞一个

回复 #1 yasakya 的帖子

请问,我原先的CVS库是在Linux中的,我现在想改用SVN,且想把库放在Windows中,我可以这样转换吗?
可以的,svn库的内容可以copy来copy去。

你现在可以先在linux下将cvs转换为svn,然后把整个svn拷贝到windows

RCS下载下来有问题

请问是否还有别的地方可以下的(找了半天都指向它)
或者,是否可以发给我,先谢了!

chenjie@g-data.com.cn

回复 #5 cjnn 的帖子

是不是linux的工具下不全啊?
试试在windows中转换
今天试了一下 cvs2svn,但是好多文件转不过去。
环境:CVSNT 2.5.03 build2382,python2.4,cvs2svn1.5.0,UnxUtils.zip,rcs57pc1.zip
步骤:参考本文
错误描述之一:
ERROR: The command 'co -q -x,v -p1.1 -kk d:\\CVSHome\\Personal\\\xd6\xd8\xd2\xaa\xbc\xc7\xc2\xbc\\\xb9\xab\xcb\xbe\xd4\xb1\xb9\xa4\xcd\xa8\xd1\xb6\xc2\xbc.doc,v' failed with exit status=-1 and no output

难道是不能用中文文件名?
但是有的中文文件也能转换啊,有的英文文件也不能转换。请问如何解决。

回复 #7 bodhi_tree 的帖子

非英文一直是这些工具的弱点,只能多试,看看能不能绕着走。
几个要从CVS转换到SVN的朋友可以多交流
在我现在的环境中转不过去的,文件名长度为
5个汉字,如:移除的服务.txt,v(天网规则.dat,v),
21个acscii字符,如:ObjectOrientedModel_1.oom,v(xxxxxxxxxxxxx.csproj.user,v可以)

也就是说,跟文件长度有关,根据报的错误,应该是co不能支持那么长的文件名,但是又该如何解决呢?

[ 本帖最后由 bodhi_tree 于 2006-10-8 17:53 编辑 ]

回复 #9 bodhi_tree 的帖子

如果只是文件名长度有关系,那好办,在CVS中将文件名全部改成短一点的再转就OK了
好像又不是。就算是只跟长度有关,也没法改啊。总不可能把以前CVS库里的所有文件都改了嘛。文件之间的关系怎么办啊?
可不可以弱弱的说个方法?也只是想的 没有尝试
在windows下将cvs库转成svn库

假设有正在用的cvs库“repcvs”,现要将其内容导到svn库“repsvn”中
1。在本地建一个工作目录work,签出repcvs中的所有模块(cvsroot除外)。
2。用tsvn将work中的内容导入到repsvn中,再重新设置权限。
好象是挺简单的啊~不知道可行不~
等下加班有时间多就试试~
嘿嘿
云水禅心
什么叫做档案库?配置库?版本库?
档案库是不是管理版本号之类的东西?
配置库是不是管理配置文件的东西的?
版本库是放代码的?
云水禅心

回复 #12 小宇 的帖子

你这样只是保留了最后的版本,就不是转换了。
转换的目的是保留原来所有的版本历史

回复 #13 小宇 的帖子

实际上在这里这三个名字代表的都是一个东西,我一般叫它版本库。因为它保留了所有东西的历史版本,不仅仅是代码,也可以是文档、发布的软件等等

回复 #14 PCplayer 的帖子

也是也是~
因为我们公司cvs也是刚开始用没多久
所以转移的时候版本号还没要求要转
那我把前面的再仔细看下~
云水禅心
我们的可能也要转,

关于中文

刚刚无意在网上看到有这个参数
--encoding=GBK
如果不行试这个
--encoding=gb2312

  • 提问前先用多种搜索方式、多种可能的关键字对论坛进行搜索
  • 提问时详细描述软件版本,自己要做什么,做了什么,遇到了什么
  • 最后的绝招:PM版主
  • 问题解决后,请自行将“求助”修改为“已解决”

再补充一下

关于windows上的cvs2svn,有朋友看到是后缀是.tar,以为包不对,其实是对的,解压出来就可以用

  • 提问前先用多种搜索方式、多种可能的关键字对论坛进行搜索
  • 提问时详细描述软件版本,自己要做什么,做了什么,遇到了什么
  • 最后的绝招:PM版主
  • 问题解决后,请自行将“求助”修改为“已解决”

请问后面的cvs项目的路径该怎样写?我是cvs是在另外一台服务器上的
照上面说的做
E:\tools\cvs2svn-1.5.1>E:\tools\Python25\python cvs2svn -s http://192.168.1.10/s
vn/traffic /cvs_traffic
ERROR: The specified CVS repository path '\cvs_traffic' is not an existing direc
tory.


[ 本帖最后由 dxny5 于 2007-5-21 15:33 编辑 ]
返回列表
订阅 我用Subversion - SVN中文论坛 邮件列表:iUseSVN@googlegroups.com
电子邮件:
网站重要事项将会在这个列表进行通知,点击这里浏览存于列表中的所有邮件