2010年12月10日星期五

CVS中如何把二进制文件转成文本

cvs手册中只说了用cvs admin -kb filename把文本文件转成二进制格式,没说如何把二进制文件转成文本格式。
把二进制文件转成文本格式其实也不难,只需用cvs admin -kkv filename就可以。
不过这样做还有一点问题。


对于二进制文件,服务器和本地的内容是一样的。
对于文本文件,上传和下载时,cvs会对换行符号进行替换。
在Windows客户端,文本文件的换行符是0d0a,服务器上是0a。
即上传时,将0d0a换成0a,下载时,将0a换成0d0a。

服务器上的行替换方式变化以后,客户端必须使用-a参数(Reset any sticky date/tag/'-k' option)调用update,把替换方式取到客户端。
否则,客户端记录的-kb不会变,仍然用二进制方式下载文件,即不进行行替换。

如果原来是用二进制方式上传文本文件,则服务器上的换行符是0d0a,如果此时用文本方式下载这个文件,则到客户端后,这个文件的换行符会变成0d0d0a,用VS打开后看到的现象就是每行之间都插入了一个空行。

解决方法一
先用二进制方式-kb下载文件,备份,用admin -kkv改服务器端。
用update -a改客户端,用备份的文件覆盖这个多了换行的文件,上传。

解决方法二
先用二进制方式-kb下载文件,修改CVS目录下的Entries文件,去掉相应文件的-kb参数,上传。
此时客户端的-kb参数又会恢复。
用admin -kkv改服务器端,用update -a去掉客户端的-kb参数。

没有评论:

发表评论