昨天(周五)大家下班后,一个人留在公司,把核心产品开发团队使用了整整1年的CVS资源库从CVSNT移到了Linux平台下,原本以为会很简单很顺利,因为之前类似的移植并不是没有做过,所以预估的时间包括验证在内是1~2个小时,不过最终却花掉4个小时。怎么回事呢?且听我慢慢道来。
经过1年的积累,资源库有400多M,大大小小的Java项目有206个之多。按照最初的计划,移植只需要原封不动的把资源库目录整个从CVSNT服务器拷贝到Linux服务器即可,所以资源库大小和项目多少本来不是啥大问题,但谁料半路却杀出个程咬金:.jar文件在新的资源库checkout到本地后无法正常使用,这还了得?
仔细一看,乖乖,原本"Binary"的文件,在新的资源库下,却变成了"ASCII -kkv",不仅是.jar,其他的二进制文件如.jpg, .exe之类的也是同样的问题。第一反应是CVSNT和Unix经典的CVS在处理RCS文件时还是有些不同,以至于原本在CVSNT下文件类别的标记信息如"Binary"在移植过程中丢失了,变成默认的文本类型。之前有朋友提醒的.doc文件移植后无法打开应该也是同样问题。怎么办?一个文件一个文件的改?肯定不现实。
一种方案是把所有出现的二进制文件类型/后缀名找出来,然后在服务器端批量删除(Linux下写个脚本来做这件事并不难),客户端这边从原资源库checkout最新版本,重定向资源库URL到新的资源库,同步,提交。这招比较狠,但最终没有用,因为在浏览现有资源库时,发现还有不少其他问题,如classes文件夹被加到版本控制中,类似还有.settings文件夹,甚至Thumbs.db,不一而足。时间有限,与其每个Java项目去找一遍,整理出需要删除的文件(夹)清单,然后写脚本,然后强行资源库重定向,不如一步一个脚印把现有资源库的所有Java项目捋一遍,至少心里踏实。于是一狠心、一咬牙,有洁癖的我开始了漫长的"愚公移山":一个项目接一个项目,遇到Binary文件,服务器删之,客户端checkout后从原来的地方拷贝过来,必要的地方加上.cvsignore,再添加提交。*
经过4个小时的努力,终于大功告成:自动编译脚本正确运行,构建成功,客户端IDE(Eclipse)从新的资源库checkout,编译通过,没有红叉。
后记:自己认为计划得再好的事情,真正去做的时候,总还是会遇到这样那样的问题和意想不到的状况,这件事也告诉我自己其实我的前期准备远不够充分,算是自食其果吧。有没有更好的办法,我觉得肯定有,但是在特定的情况下(时间/效率/目标),我相信我的方法还是能够让我自己满意的。还有一点提醒所有CVS的用户,不该提交的文件,最好第一时间加到.cvsignore。子曾经曰过:“纠正错误,时间最早,代价越小”。
*
请勿不假思索的模仿,这样做会丢失掉这些文件的历史版本信息,如果删除的时候不小心,同时还会把历史上存在过的同类型文件删掉。我这里之所以可以这么做,是因为我们的实际情况对这些二进制文件不需要保留历史信息。
分享到:
相关推荐
在TortoiseCVS-1.12.5+ CVSNT的组合中,开发者可以享受到一套完整的版本控制系统,从客户端的直观操作到服务器端的高效管理。汉化包的加入使得国内用户无需担心语言障碍,能更加顺畅地使用这些工具。 安装Tortoise...
汉化: 将文件夹zh-CN放到安装目录下的locale下 Windows7下乱码解决方案: 1.卸载安装TortoiseCVS时自动安装的CVSNT. 2.重新安装CVSNT(运行目录下的cvsnt-server-2.5.05.3489.msi文件)。
CVS 服务器程序 CVSNT 2.0.58d + CVS 客户端工具 TortoiseCVS 1.10.10 (for win7)+ 图示说明 最新的版本cvsnt-2.5.03.2382有4.2MB,追新的朋友可以自己上官网下载. 1都安装好软件 2配置服务器端 a 查看运行...
本文详细介绍了如何在Windows环境下将CVS服务器版本库从旧服务器迁移到新服务器的过程。整个迁移过程中需要注意的关键点包括:确保数据的完整性和一致性、正确安装和配置CVS服务、及时更新客户端配置信息等。通过...
【cvs安装包(包括cvsnt)】是一款用于版本控制的软件集合,其中包含了cvsnt、Python 2.5.1以及Wincvs这三个关键组件。版本控制系统是IT行业中用于协同开发、追踪代码变更的重要工具,尤其在软件开发项目中不可或缺...
cvs配套安装_CVSNT@win2003.rar
本人之前都是用的git和svn,跳槽后发现新公司用的cvs,一番研究后决定把资源共享,下载这个应该能解决你的问题,安装包都是官方网站下载的,无毒放心使用,个人整理也花费了一番功夫,所以还是不免费了,有需要的...
《Cvsnt在Linux系统中的安装与配置详解》 Cvsnt是一款强大的版本控制系统,它扩展了原始的CVS(Concurrent Versions System)功能,增加了许多企业级特性,如支持多种数据库、SSL加密等。在Linux环境下,Cvsnt提供...
### Linux下的CVS配置规则及细节问题 #### CVS简介与安装 CVS(Concurrent Versions System)是一款在开源社区广泛使用的...通过遵循这些步骤,可以确保CVS系统在Linux环境下稳定运行,为团队协作开发提供有力支持。
从CVS迁移到SVN是提高团队协作效率的重要一步。SVN-Importer和CVS2SVN提供了两种不同的解决方案,可以根据项目需求灵活选择。在迁移过程中,务必备份原有CVS数据,以防止意外损失。同时,迁移后的用户培训和新工作...
每个开发人员可以在本地安装TortoiseCVS客户端,通过CVSNT服务端连接到仓库。在TortoiseCVS的界面下,他们可以轻松地查看代码历史、比较不同版本的差异、解决冲突,并将更改同步到服务器,确保团队成员之间的代码...
"CVS.rar_cvs_cvs Lin_cvs linux_linux c_linux c++"这个标题暗示了本指南将涵盖CVS在Linux环境下的使用,以及它与C和C++编程语言的结合。 在描述中提到的“linux下CVS的应用指南”,意味着我们将讨论如何在Linux...
【CVS服务器】cvsnt-2.5.04.2878-3236 是一个关于源代码版本控制系统CVS(Concurrent Versions System)的服务器软件的特定版本。CVS是一种广泛使用的开源工具,它允许开发团队协同工作,管理项目中的文件和代码更改...
【Linux服务器端与Windows客户端CVS的集成及安装】 CVS(Concurrent Versions System)是一种开源的版本控制系统,常用于管理软件项目的源代码。在Linux服务器端和Windows客户端环境中使用CVS,可以实现跨平台的...
1. **集成在Windows资源管理器中**:TortoiseCVS将所有版本控制操作集成到文件资源管理器的右键菜单中,如添加、提交、更新、比较等,使得操作直观且易于上手。 2. **直观的图形界面**:TortoiseCVS提供了丰富的...
总的来说,CVSNT 2.0.58d与TortoiseCVS 1.8.14的组合为开发者提供了强大而灵活的版本控制解决方案,无论是小型项目还是大型团队,都能从中受益。通过这个组合,开发者可以更加高效地协同工作,保证代码的质量和稳定...
6. **权限管理**:CVSNT支持细粒度的权限控制,可以为每个用户或用户组分配不同的读写权限,以确保代码库的安全性。 7. **备份和恢复**:为了防止数据丢失,定期备份CVSNT服务器上的仓库是非常重要的。同时,如果...
CVS是一种广泛应用的开源版本控制系统,它允许开发团队协同工作,同时跟踪对代码库的每一次修改。CVSNT是CVS的Windows NT/2000/XP/2003/Vista/7/8/10及后续版本的优化版本,提供了更强大的功能和更好的性能。 在...
【CVSNT下载或CVS】是一个关于版本控制系统的话题,主要关注的是CVS(Concurrent Versions System)的一个特定分支——cvsnt。CVS是一种开放源码的版本控制系统,广泛应用于软件开发中,用于管理代码的变更历史,...