- 浏览: 472197 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 1693自定义XSD对XML校验,eclipse校验出现如下错误: ... -
eclipse 正则 查找替换
2014-11-25 17:44 905不得不说eclipse这个功能强大。 见图: 可以 ... -
mysql数据表损坏导致的reviewboard问题
2013-07-01 14:13 1085diffviewer_filediffdata is m ... -
ARGOX 力象 CP-3140L 条码打印机 B/S 打印
2013-06-26 14:36 49371、关于CP-3140L对应的ActiveX 因项目 ... -
jira 二维过滤器 二维表格
2013-03-22 10:38 5599JIRA不用多介绍,当一个团队有各样任务,想实时了解各成员手 ... -
apache http 服务器路径中文乱码问题
2012-12-03 13:46 6036httpd.conf 文件中配置 AddDefaultCha ... -
centos6 安装 pptpd vpn服务器
2012-11-28 17:39 2596参考教程:http://blog.secaserver.com ... -
VirtualBox 远程桌面(VDR)使用
2012-11-10 16:26 3796VirtualBox这个就不说了,非常佩服老外的这种分享精神, ... -
axis 工具包使用笔记
2012-09-06 15:19 937难得用一次,做个笔记。 wsdl2java -o . ... -
jbpm4.3不删除子流程"bug"解决
2012-08-24 18:43 2146jbpm4.3一个著名的bug https://jira.jb ... -
VirtualBox 虚拟机新增空间 虚拟机克隆
2012-08-22 14:17 2116因物理机不够用,弄了个DELL服务器,用VBOX上面开了3个 ... -
linux 截取文件指定范围到文件
2012-06-01 14:50 1275sed -n '2,5p' catalin ... -
EL表达式对Map操作
2012-05-14 17:43 1159普通的迭代key以及value都容易,如果需要根据key提取v ... -
centos 5.5 安装配置 openvpn
2012-04-16 13:25 1639经常在外办公,数据库 ... -
shell 间隔时间执行命令
2012-04-12 10:33 4126客户现网性能问题严重,出下策,每间隔段时间对tomcat进程做 ... -
linux cpu监控
2012-04-11 14:44 912之前一直使用top监控cpu情况,发现多核时就不好看单核情况了 ... -
TPTP监控远程Tomcat(备份)
2012-04-09 19:21 0TPTP这就不多介绍了,见 http://www.e ... -
TPTP监控远程Tomcat
2012-04-09 19:20 1338TPTP这就不多介绍了,见 http://www.e ... -
TPTP监控远程Tomcat
2012-04-09 19:19 2TPTP这就不多介绍了,见 http://www.eclips ... -
PHP入门挺简单
2012-03-25 22:32 828因为看门猪,所以开始熟悉PHP。之前直接拿程序能看懂6,7成。 ...
相关推荐
【从CVS迁移到SVN的两种方法】 随着版本控制系统的发展,越来越多的团队选择从CVS(Concurrent Versions System)转向SVN(Subversion),因为SVN提供了更强大的功能和更好的用户体验。本教程将详细解释如何使用两...
随着项目的发展,很多团队选择从CVS迁移到SVN,以利用后者的优势。 cvs2svn是一个开源工具,专门设计用来帮助用户平滑地将他们的CVS仓库转换为SVN格式。它能够保留原始CVS历史记录,使得迁移过程中不会丢失任何提交...
【CVS迁移SVN工具亲测可用】 在软件版本控制领域,CVS(Concurrent Versions System)和SVN(Subversion)都是广泛使用的系统。CVS曾是许多项目的主要选择,但随着时间推移,SVN因其更先进的特性和更好的管理功能而...
总的来说,《我的cvs2svn笔记》是一份实用的资源,对那些希望从CVS迁移到SVN的用户来说,具有很高的参考价值。它不仅提供了详细的转换步骤,还有实例演示,使得整个迁移过程更为直观易懂。通过学习这份笔记,用户...
### CVS团队升级SVN团队的解决...从CVS迁移到SVN是一项复杂但值得的投资,不仅能提升团队的工作效率,还能提高代码的安全性和质量。通过遵循本文档提供的指南,团队可以顺利完成迁移过程,并在未来的工作中受益匪浅。
### CVS到SVN迁移指南:理解与实践 在软件开发领域,版本控制系统是不可或缺的工具,帮助团队管理和追踪代码的变化。随着技术的发展,Subversion(SVN)因其强大的功能和性能逐渐取代了早期的Concurrent Versions ...
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 ...
随着版本控制系统的发展与演进,从较早的集中式版本控制系统(如CVS)到更先进的Subversion(SVN),开发者们经常面临将现有CVS仓库迁移到SVN的需求。本文将详细介绍如何在Windows环境下完成这一过程,并给出具体的...
本资料包涵盖了从基础到进阶的SVN知识,包括客户端、服务端的使用以及从CVS迁移到SVN的转换方法。 1. SVN基础概念: - 版本控制系统:SVN是版本控制系统的一种,用于记录文件和目录的修改历史,方便团队成员之间的...
cmake 的流行其实要归功于 KDE4 的开发(似乎跟当年的svn 一样,KDE 将代码仓库从 CVS 迁移到 SVN,同时证明了 SVN 管理大型项目的可用性),在 KDE开发者使用了近 10 年autotools 之后,他们终于决定为 KDE4 选择一个...
再者,SVN的命令行界面和操作方式与CVS相似,降低了学习成本,方便了从CVS迁移的用户。 VSS相比于CVS和SVN,其主要缺点在于对并发编辑的支持不够完善,以及在处理大文件和非文本数据时的不稳定表现。此外,VSS的...
的流行其实要归功于 KDE4 的开发(似乎跟当年的 svn 一样,KDE 将代码仓库从 CVS 迁移到 SVN,同时证明了 SVN 管理大型项目的可用性),在 KDE 开发者使用了近 10 年 autotools 之后,他们终于决定为 KDE4 选择一个新的...
《企业团队开发工具:SVN的深度解析》 在软件开发领域,版本控制系统是团队协作中不...随着越来越多的开发团队从CVS迁移到SVN,这一趋势也反映了软件开发工具的不断进化和优化,以适应日益复杂和协作密集的开发环境。
的流行其实要归功于 KDE4 的开发(似乎跟当年的 svn 一样,KDE 将代码仓库从 CVS 迁移到 SVN,同时证明了 SVN 管理大型项目的可用性),在 KDE 开发者使用了近 10 年 autotools 之后,他们终于决定为 KDE4 选择一个...
2. **切换版本控制系统**:当从CVS或SVN迁移到其他系统(如Git)时,需要先清除旧的版本控制信息,以便正确地初始化新的版本库。 3. **备份或共享代码**:在不涉及版本控制的情况下分享代码时,避免将CVS或SVN的元...
总的来说,从CVS到SVN的转换是一个涉及多个步骤的过程,"rcs57pc1.zip"中的工具是关键组件,它们帮助解析和迁移CVS库中的历史版本信息。这种转换能够使团队利用SVN的现代功能,提高开发效率和协作体验。
这个过程通常在组织或项目决定从CVS迁移到更现代的SVN系统时进行。 【描述】描述中提到的SVN Importer是一个专用工具,能够帮助用户平滑地将现有的CVS版本历史迁移到SVN环境中。这样的迁移对于保留项目的历史记录、...
互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。 服务器svn上的项目下载到eclipse 资源太大,传百度网盘了,链接在附件中,有需要的同学...