Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3906275
  • 博文数量: 534
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4800
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(534)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(253)

2006年(73)

分类:

2007-10-09 13:44:28

A.1. 智能0D0A?为何处理回车换行一团糟?

何为0D0A(CRLF),DOS下的回车换行是也。由于CVS的服务器端和客户端都可能跨平台,那么我们分别来说。

    * 服务器端

      无论在UNIX上还是WINDOWS(cvsnt)的服务器,都以同样的格式保存文本文件的换行符(无论是DOS的0D0A,还是UNIX上的0A,还是MAC上的0D)。服务器端都将换行符保存为 0A。
      但这并不是说在服务器端存储的文件(以 ,v结尾),不能包含字符“0D”。比如二进制文件中很多包含字符0D。文本文件也可能包含0D,但大部分包含0D的文本文件,很有可能是由于不当的跨平台使用CVS造成的。
      服务器端的这种处理方法很好的适应了跨平台特性。亦即Unix端服务器的Repository 可以直接拷贝到Windows端的Repository中,Vice Versa。

      警告    
      在将Unix维护的服务器端,移植到Windows端,我曾经遇到一个百思不得其解的问题。后来发现是由于Winzip的一个古怪的缺省设置造成的:“TAR file smart CR/LF conversion”!

    * UNIX 客户端

      Unix上的客户端文本原样存储保存到服务器端,0D作为普通字符随文件checkin,因为 Unix的默认文件换行符为 “0A”。
      但是如果Unix端的文件因为某种原因,如使用samba共享unix的文件系统,用WINDOWS 工具编辑,导致文件换行符变为 CRLF,则在 Unix 下 checkin,会将 OD 随文件checkin。

    * Windows 客户端

      WINDOWS上的客户端,具有智能CRLT转换的功能,即:将文本文件中的CRLF转换为LF,提交到服务器端,又可以将服务器端的LF转换为CRLF。
      WINDOWS上的客户端,具有智能CRLT转换的功能,即:将文本文件中的CRLF转换为LF,提交到服务器端,又可以将服务器端的LF转换为CRLF。但是如果服务器端是CRLF,则转换为CRCRLF。

    * WinCVS 客户端的双重身份

      WinCVS 可以兼具 Windows和Unix客户端的特性。当选择选项: Admin-->Preferences-->Globals-->Checkout text files with the Unix LF。则成为类似 Unix 客户端的功能。
      强烈建议不要选择该选项,让一个工具做它不相称的工作,出问题是迟早的事情。

    * Cygwin 的CVS客户端

      Cygwin的客户端相当于 Unix 的客户端。
      由于运行在Windows上,可能经常提交带有 CRLF 的文本文件,因此我常常用Windows的客户端程序替换调 Cygwin 下自带的 CVS。

    * CRLF引起的一团糟
       Client                  Action               Server
      ============================================================
         LF             -- Unix checkin -->           LF
        CRLF           <-- Windows checkout --        LF
        CRLF            -- Unix checkin -->          CRLF
       CRCRLF          <-- Windows checkout --       CRLF

提示    要防止混乱切记不要用Unix的CVS客户端(包括Cygwin的CVS客户端)Checkin DOS格式的文件。

来源:
阅读(2991) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~