- 浏览: 463573 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
liyijie123:
楼主: 您好!您的资料非常有价值,数据分析阶段的图 ...
openfire 3.7 压力测试一(注册) -
z327117143:
当前项目引用的项目被close时执行main run as 也 ...
eclipse run 或 debug CreateProcess error=206 -
leeyisoft:
下面是我在 centos 上安装的步骤,http://192. ...
Review Board 的使用 -
lj2931:
ageha67 写道这个命令行有试过,输p(permanent ...
Review Board 的使用 -
ageha67:
这个命令行有试过,输p(permanently)接受了,但是r ...
Review Board 的使用
去年刚入职现所在公司时,做过一个CVS->SVN迁移,SVN库大概1.8G左右,花了不少时间处理。由于急着迁移并未做好笔记,导致这次迁移另外一个1.5G的项目有点束手无策,好歹之前有经验也有教训,特做下笔记。
环境说明:
CVS在一台linux服务器上,SVN在另外一台linux服务器上,项目大概1.5G左右(多年项目,积累了较多tag及文档)。
辅助环境:XP,Ubuntu
需要工具:python,cvs2svn (python支撑cvs2svn运行,一般发行版linux都已经包含python)
步骤:
1、先通知参与项目人员,将必要的代码提交,因为自迁移工作开始,CVS的使命也基本完成了,如果漏了一些最新本地副本的提交将人为导致迁移出现一些问题。
2、为加快迁移速度,多年沉积下来的版本控制里,像release备份,一些图片等文档,没必要迁移历史,确定哪些不必要迁移(后续人工处理)。这一步将项目所在的CVS库目录tar打包,不需要进行压缩(文件过多,压缩花的时间得偿失)。打包的目的是方便取到本地,清除一些不必要迁移的数据,暂时移除一些不需要迁移历史的数据。
3、将tar取到本地并处理好后,就需要将它放到linux(windows下也能完成,但个人更喜欢在linux操作)。从windows下将tar放到linux上,并解压缩,有可能会有中文文件乱码情况,这里的解决方法有几种:1)使用rar包。2)修改linux系统上的字符编码为gbk/gb2312,如果在linux上看到的中文目录或文件名正常了,那就可以进行接下来的操作了。
4、也是最重要的一步,将CVS库导出成SVN DUMP文件。
4.1、为保证迁移到SVN的中文目录及中文文件名都正常,可以从解压的CVS文件夹里,复制一个包含中文目录及中文文件名的目录出来,并在它下面建立一个名为CVSROOT的目录,然后使用cvs2svn导出成SVN DUMP文件。假设这个测试的CVS目录名为/home/cvst/test,它下面包含中文目录及文件名,那在test下建立CVSROOT空目录,运行命令:
sudo /usr/mysoft/Python/python cvs2svn --dumpfile=/home/littlechang/testChs.dump /home/cvst/test --encoding=gb2312
这里是假设dump文件放在/home/littlechang 下,正常情况控制台会出现日志,注意看日志中第一个处理步骤pass1 中处理到中文文件名及目录是否正常,如果不正常,请在命令的最后再加上 --encoding=utf-8 即两个encoding参数,继续进行测试,如果不行再换编码直到成功。 4.1输出的日志样例见本文尾。
4.2、完成中文测试通过后,得到了testChs.dump文件,这时为安全起见,将它加载到svn中去。假设新svn库在/home/svn/myProject(命令:svnadmin create /home/svn/myProject)下,注意这个版本库里不要包含trunk,branchs,tags 三个目录,如有请清除(例如可在tortoisesvn中将其删除)。
使用命令:svnadmin load /home/svn/myProject</home/littlechang/testChs.dump
运行后,会提示开始处理,如不出现异常信息则表示成功。
4.2输出的日志样例见本文尾。
4.1输出日志样例:
Time for pass1 (CollectRevsPass): 267.4 seconds.
----- pass 2 (CleanMetadataPass) -----
Converting metadata to UTF8...
Done
Time for pass2 (CleanMetadataPass): 0.075 seconds.
----- pass 3 (CollateSymbolsPass) -----
Checking for forced tags with commits...
Done
Time for pass3 (CollateSymbolsPass): 0.053 seconds.
----- pass 4 (FilterSymbolsPass) -----
Filtering out excluded symbols and summarizing items...
Done
Time for pass4 (FilterSymbolsPass): 97.07 seconds.
----- pass 5 (SortRevisionSummaryPass) -----
Sorting CVS revision summaries...
Done
Time for pass5 (SortRevisionSummaryPass): 0.163 seconds.
----- pass 6 (SortSymbolSummaryPass) -----
Sorting CVS symbol summaries...
Done
Time for pass6 (SortSymbolSummaryPass): 2.268 seconds.
----- pass 7 (InitializeChangesetsPass) -----
Creating preliminary commit sets...
Done
Time for pass7 (InitializeChangesetsPass): 103.9 seconds.
----- pass 8 (BreakRevisionChangesetCyclesPass) -----
Breaking revision changeset dependency cycles...
Done
Time for pass8 (BreakRevisionChangesetCyclesPass): 20.86 seconds.
----- pass 9 (RevisionTopologicalSortPass) -----
Generating CVSRevisions in commit order...
Done
Time for pass9 (RevisionTopologicalSortPass): 20.90 seconds.
----- pass 10 (BreakSymbolChangesetCyclesPass) -----
Breaking symbol changeset dependency cycles...
Done
Time for pass10 (BreakSymbolChangesetCyclesPass): 55.48 seconds.
----- pass 11 (BreakAllChangesetCyclesPass) -----
Breaking CVSSymbol dependency loops...
Done
Time for pass11 (BreakAllChangesetCyclesPass): 74.64 seconds.
----- pass 12 (TopologicalSortPass) -----
Generating CVSRevisions in commit order...
Done
Time for pass12 (TopologicalSortPass): 74.56 seconds.
----- pass 13 (CreateRevsPass) -----
Mapping CVS revisions to Subversion commits...
Creating Subversion r1 (Project initialization)
Creating Subversion r2 (commit)
……
一直到cvs的最大版本号,期间可以看到tag号也被提交。(cvs,svn tag机制不同)
Creating Subversion r4717 (commit)
Done
Time for pass13 (CreateRevsPass): 64.68 seconds.
----- pass 14 (SortSymbolsPass) -----
Sorting symbolic name source revisions...
Done
Time for pass14 (SortSymbolsPass): 4.683 seconds.
----- pass 15 (IndexSymbolsPass) -----
Determining offsets for all symbolic names...
Done.
Time for pass15 (IndexSymbolsPass): 3.554 seconds.
----- pass 16 (OutputPass) -----
Starting Subversion Dumpfile.
Starting Subversion r1 / 4717
Starting Subversion r2 / 4717
……一直到最大版本号
Starting Subversion r4717 / 4717
Done.
Time for pass16 (OutputPass): 431.2 seconds.
cvs2svn Statistics:
------------------
Total CVS Files: 11061
Total CVS Revisions: 19671
Total CVS Branches: 2852
Total CVS Tags: 1340371
Total Unique Tags: 346
Total Unique Branches: 2
CVS Repos Size in KB: 564984
Total SVN Commits: 4717
First Revision Date: Tue Aug 1 13:43:51 2006
Last Revision Date: Fri Sep 10 17:54:27 2010
------------------
Timings (seconds):
------------------
250 pass1 CollectRevsPass
0 pass2 CleanMetadataPass
0 pass3 CollateSymbolsPass
97 pass4 FilterSymbolsPass
0 pass5 SortRevisionSummaryPass
2 pass6 SortSymbolSummaryPass
102 pass7 InitializeChangesetsPass
21 pass8 BreakRevisionChangesetCyclesPass
21 pass9 RevisionTopologicalSortPass
56 pass10 BreakSymbolChangesetCyclesPass
76 pass11 BreakAllChangesetCyclesPass
77 pass12 TopologicalSortPass
67 pass13 CreateRevsPass
5 pass14 SortSymbolsPass
3 pass15 IndexSymbolsPass
431 pass16 OutputPass
1208 total
4.2输出日志样例:
……省略一些小版本日志输出
这里是svnadmin在将我们dump 文件加载到版本库,它会从第1个版本号开始提交,直到最后一个版本号。
<<< Started new transaction, based on original revision 4713
* editing path : trunk/webapps/base/op/product/productList4promotionBind.jsp ... done.
* editing path : trunk/javasrc/baseproject/com/kanmenzhu/LoginAction.java ... done.
------- Committed new rev 4719 (loaded from original rev 4713) >>>
<<< Started new transaction, based on original revision 4714
* editing path : trunk/javasrc/baseproject/com/kanmenzhu/UserService.java ... done.
------- Committed new rev 4720 (loaded from original rev 4714) >>>
<<< Started new transaction, based on original revision 4715
……
------- Committed new rev 4723 (loaded from original rev 4717) >>>
当最大版本号提交完毕,也就意味着迁移工作的基本完毕。
==================分隔线==============================
在完成4.1,4.2的测试后(之所以要测试,因为如果直接将整个CVS库进行操作,如果中途失败,开销的时间得不偿失,用小目录测试结果一样),访问新的SVN库,查看历史记录等是否正常。如果正常,则对整个CVS库进行迁移,迁移成功的结果应该是:
历史记录完整,包含提交人信息;CVS上的branchs,tags 信息被添加到SVN 的branchs,tags中。
5、完成以上操作后,将之前暂时移出来不需要历史记录的文档进行还原,即提交到新的SVN库。
===============================
发表评论
-
Element must have no character or element information item [children], because
2015-03-04 09:44 1600自定义XSD对XML校验,eclipse校验出现如下错误: ... -
eclipse 正则 查找替换
2014-11-25 17:44 826不得不说eclipse这个功能强大。 见图: 可以 ... -
mysql数据表损坏导致的reviewboard问题
2013-07-01 14:13 1041diffviewer_filediffdata is m ... -
ARGOX 力象 CP-3140L 条码打印机 B/S 打印
2013-06-26 14:36 46831、关于CP-3140L对应的ActiveX 因项目 ... -
jira 二维过滤器 二维表格
2013-03-22 10:38 5531JIRA不用多介绍,当一个团队有各样任务,想实时了解各成员手 ... -
apache http 服务器路径中文乱码问题
2012-12-03 13:46 5995httpd.conf 文件中配置 AddDefaultCha ... -
centos6 安装 pptpd vpn服务器
2012-11-28 17:39 2555参考教程:http://blog.secaserver.com ... -
VirtualBox 远程桌面(VDR)使用
2012-11-10 16:26 3666VirtualBox这个就不说了,非常佩服老外的这种分享精神, ... -
axis 工具包使用笔记
2012-09-06 15:19 856难得用一次,做个笔记。 wsdl2java -o . ... -
jbpm4.3不删除子流程"bug"解决
2012-08-24 18:43 2099jbpm4.3一个著名的bug https://jira.jb ... -
VirtualBox 虚拟机新增空间 虚拟机克隆
2012-08-22 14:17 2065因物理机不够用,弄了个DELL服务器,用VBOX上面开了3个 ... -
linux 截取文件指定范围到文件
2012-06-01 14:50 1153sed -n '2,5p' catalin ... -
EL表达式对Map操作
2012-05-14 17:43 1091普通的迭代key以及value都容易,如果需要根据key提取v ... -
centos 5.5 安装配置 openvpn
2012-04-16 13:25 1584经常在外办公,数据库 ... -
shell 间隔时间执行命令
2012-04-12 10:33 4039客户现网性能问题严重,出下策,每间隔段时间对tomcat进程做 ... -
linux cpu监控
2012-04-11 14:44 865之前一直使用top监控cpu情况,发现多核时就不好看单核情况了 ... -
TPTP监控远程Tomcat(备份)
2012-04-09 19:21 0TPTP这就不多介绍了,见 http://www.e ... -
TPTP监控远程Tomcat
2012-04-09 19:20 1297TPTP这就不多介绍了,见 http://www.e ... -
TPTP监控远程Tomcat
2012-04-09 19:19 2TPTP这就不多介绍了,见 http://www.eclips ... -
PHP入门挺简单
2012-03-25 22:32 758因为看门猪,所以开始熟悉PHP。之前直接拿程序能看懂6,7成。 ...
相关推荐
介绍了SVN-Importer和CVS2SVN两种从CVS迁移到SVN的两种方法,并把SVN-Importer和CVS2SVN软件打包在内。下载后直接可以使用。
CVS迁移SVN工具亲测可用 1、cvs2svn-2.5.0.tar.gz 2、python 3、rcs57pc1 4、UnxUpdates 5、VisualSVNServer361x64
cvs2svn is a program that can be used to migrate a CVS repository to Subversion (otherwise known as "SVN") or git. Documentation: The list of cvs2svn features explains briefly why converting a ...
cmake 的流行其实要归功于 KDE4 的开发(似乎跟当年的svn 一样,KDE 将代码仓库从 CVS 迁移到 SVN,同时证明了 SVN 管理大型项目的可用性),在 KDE开发者使用了近 10 年autotools 之后,他们终于决定为 KDE4 选择一个...
的流行其实要归功于KDE4的开发(似乎跟当年的svn一样,KDE将代码仓库从CVS迁移到 SVN,同时证明了SVN管理大型项目的可用性),在KDE开发者使用了近10年autotools 之后,他们终于决定为KDE4选择一个新的工程构建工具,...
的流行其实要归功于 KDE4 的开发(似乎跟当年的 svn 一样,KDE 将代码仓库从 CVS 迁移到 SVN,同时证明了 SVN 管理大型项目的可用性),在 KDE 开发者使用了近 10 年 autotools 之后,他们终于决定为 KDE4 选择一个新的...
的流行其实要归功于 KDE4 的开发(似乎跟当年的 svn 一样,KDE 将代码仓库从 CVS 迁移到 SVN,同时证明了 SVN 管理大型项目的可用性),在 KDE 开发者使用了近 10 年 autotools 之后,他们终于决定为 KDE4 选择一个...
svn一样,KDE将代码仓库从CVS迁移到SVN,同时证明了SVN管理大型项目的可用性),在KDE 开发者使用了近10年autotools之后,他们终于决定为KDE4选择一个新的工程构建工具,其根本原因 用KDE开发者的话来说就是:只有...
互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。 服务器svn上的项目下载到eclipse 资源太大,传百度网盘了,链接在附件中,有需要的同学...
1.安装客户端 2.安装语言包 3.设置语言中文简体(不知道怎么设?度娘) ...互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
欢迎使用简体ROSS!... 多年来,ROSS已从CVS迁移到SVN,再迁移到Git和GitHub.com。 该代码由Chris Carothers和他在RPI的研究生维护()。 多年来,在ROSS内实现了多种功能(包括共享内存版本)。 此后,
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
1.安装客户端 2.安装语言包 3.设置语言中文简体(不知道怎么设?度娘) ...互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支...互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
1.安装客户端 2.安装语言包 3.设置语言中文简体(不知道怎么设?度娘) ...互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
SVN Importer可以进行CVS版本库到SVN版本库的迁移。
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理...互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的