CVS从Windows下移植到Linux下的有关问题

CVS从Windows上移植到Linux上的问题

     老板决定将CVS服务器从旧有的的WindowsServer上移到Linux上,原因是用户太多,而且服务器还中毒了,速度非常慢,并且随时有数据丢失的风险。
     主要的操作不是我做的,服务器是Redhat AS,大体上是安装一个CVSServer,然后新建一个新的repository,然后把原有的东西拷贝过去。
     这里面就遇到了http://www.blogjava.net/sean/archive/2007/04/14/110640.html上面提到的问题,这些问题都是出现在Windows用户上,使用Linux就没有这问题 ,小开心一下:P。就是原本Binary的文件都变成了ACSII-kkv,这样会导致Windows用户无法识别这些文件的问题,比如jar文件和图片文件。还有就是原来Windows用户的路径格式都有错了。

     路径的问题,没办法,Eclipse的CVS上并没有提供修改checkout代码的地方,估计修改一些后台的文件可行,但是没有试验。只是一些使用乌龟CVS的人改改配置就可以直接checkout了。用EclipseCVS就有点麻烦,因为原来使用的反斜杠、大小写不加区分和中文文件名的路径都会出问题,索性都要重新checkout出来。
     比较麻烦的是码制的问题,如果重新checkout下来的代码,windows上eclipse根本无法识别,必须用Binary格式替换掉,这样就会比较麻烦。于是想到将服务器上文件删除掉,但是服务器上的文件实际上是包含版本信息的一些记录文件,都是一",V"结尾的文件,被删除以后,所有的CVS upadate都会出现问题,因为服务器认为这个文件已经处于锁定状态,会报没有权限的问题,说是什么#cvs.lock文件存在。这下可是麻烦了,到服务器上怎么都找不到这个锁文件。然后去网上搜索,很多人都说把这个锁文件删除,但是找不到怎么删除呢?通过查询也多了解了一些CVS的机制,一般每个操作都会先创建一个主锁cvs.lock,然后进行操作,之后还包含了很多锁操作,具体可以参考网上的CVS文档,还有中文的。没办法,郁闷了很久。
      结果我联系到那篇帖子的主人 Sean Gao,得到了答案:将服务器上码制有问题的文件都删除掉,然后更新本地文件,可以更新了,更新以后相当于把本地文件都删除。接下来将服务器上需要修改的路径修改权限为770,然后将本地加上正确的文件,再提交,搞定。

    在此特别感谢Sean Gao。www.blogjava.net/sean


    在这个问题解决之后又出现新的问题,就是Windows用户访问起来超级慢(而我用Linux访问的速度那就是爽就一个字),特别是提交的时候,速度简直令人难以忍受,网上也有很多人遇到这个问题,但是没有人提出好的解决办法,有人说可能和Windows上的流量监控软件或者反病毒软件的使用有关系,请问有人知道这个问题怎么解决吗?

    1个月后终于发现了解决办法:Windows上的防火墙是罪魁祸首,解决很简单,使用CVS的时候关掉防火墙,速度估计以百倍计!

 

     所以在这里给这次Linux CVS移植总结一下:

     1.强烈推荐将CVS安装到Linux上,无毒、速度快,毕竟是在Unix上诞生的东西,自然是亲生的好(最典型的例子就是ruby),我这里刚好有一个简单的统计数字:原来我在服务器(RHAS)上checkout Windows上的代码需要2分钟,现在是Linux对Linux,只需要10秒,同样Windows系统checkout也一样是飞快。

     2.权限管理灵活,在Windows上我们只知道使用系统帐号来控制权限,一直没找到其他办法,不知道谁知道其他方法,而Linux上CVS是专门的帐号,更安全,权限更好控制。

     3.Linux CVS管理略微比Windows上麻烦,尤其是锁文件的问题,上面已经给出了一些解决办法

     4.Windows防火墙的问题,很多时候Windows防火墙都是Win与Linux交流的一道巨大屏障,经常想着点就好。

     5.这点有点不一样,是我以前的问题,就是CVS服务器上文件夹命名尽量使用英文,而且不要加空格,这个对于Linux用户来说很熟悉,但是对于配制管理员来说就不一定是那么回事了,所以如果你看到CVS服务器的文件夹有问题,坚决地址这种低级错误,否则出了问题损失巨大(我们Linux的服务器就无法定位到WIn上中文乱码和带空格的文件夹)