Beyond Compare问题
来源:互联网 发布:会员消费积分系统源码 编辑:程序博客网 时间:2024/05/16 11:43
使用Git、Beyond Compare遇到的一些问题
by dreamtale on Mar.02, 2012, under 工作
之前在项目中在向git提交代码的时候,由于是在Windows平台下,每次都会有一个warning:大致是说LF will be replaced by CRLF,因为当时纳品比较急,所以在确认不会有很大问题后,就没有再去追究。昨天同事在使用git的时候又遇到了同样的问题,关键是还遇到个问题导致Beyond Compare在比较本地SVN代码与git目录下代码的时候,很多source文件显示是不一样的,但是在打开之后又显示都一样。这样就很郁闷,本来想看修改文件的差异,这种情况直接就无奈了。
于是就做了一番调查。先说为什么git会报warning,普及一个知识,LF和CRLF在文本中都是代表new line的意思,只是LF用于Linux、Unix等系统下,而CRLF主要用于Windows下。而git设置里边有一个autocrlf的配置,默认情况下,他的设置是为true,你可以通过git config core.autocrlf来看你的配置。如果这个是true的话,每次在你向git本地库中添加文件的时候,都会默认的把所有的CRLF转为LF,而当你从git上checkout的时候,这些文件又会把LF转为CRLF。这个设置主要是为了支持一个项目中的跨平台开发而用的。Windows下设置为true还是比较合适的。
既然知道为什么会有waning了,那么Beyond Compare又是怎么回事?打开Beyond Compare的文件比较设置,会有一个比较的规则设定,如图
我刚好选择了Binary comparison,这就是导致问题的原因,由于在不同系统下表示new line的方式不同,这样就势必导致文件的二进制会不一样,所以自然也就会显示文件不一样了。为了证实二进制不一样,我用Beyond Compare的Hex viewer比较了一下两个内容相同的文件:
图中的0D表示CR,OA表示LF,细心的同学还会看到这两个文件大小也明显不一样,用CRLF表示new line的文件要比只用LF表示的大一些。
那么如何来解决这个问题呢,尝试之后,选择Rules-based comparison这个选项就可以了,具体是基于什么base rule,我并没有找到,可能是基于文本Content的比较吧。
另外一个比较选项是CRC校验,Beyond Compare官方博客并不推荐使用这种方式,一般情况下,完全可以用Binary comparison代替CRC,因为Binary comparison是一边读文件一边比较,一旦发现不同的时候,就停止读文件了。而CRC需要通过读取整个文件来计算校验值。那么CRC comparison在什么时候用呢,主要是在两个地方,一个是snapshot,因为它本身不是拥有所有的文件,这时候可以把CRC存进去,来进行比较,另一个是FTP,当本地文件与远程FTP文件比较的时候,并不需要将远程文件整个下载下来,再进行比较,只需要远程的FTP server计算出一个文件的CRC,传递会本地与本地文件的CRC比较就可以了。
- Beyond Compare问题
- Beyond Compare问题日志
- Beyond Compare软件使用问题
- Beyond Compare
- Beyond Compare
- beyond compare
- Beyond Compare
- Beyond Compare
- Beyond Compare
- 解决Beyond Compare中文乱码的问题
- Beyond Compare 关于回车换行的问题
- Beyond Compare 3中文乱码问题
- Beyond Compare之工具栏图标变小问题
- beyond compare 3 中文乱码问题的解决
- beyond compare 解决文件一样,对比有差异的问题
- 遇到Beyond Compare乱码问题可以这样解决
- 怎么轻松搞定Beyond Compare文件乱码问题
- Beyond Compare之PC与UNIX文件比较问题
- 程序员的优势
- 关于自关联2
- PHP开发环境
- 抽象类和接口的区别
- 【GamingAnywhere源码分析之知识补充二】Windows钩子机制
- Beyond Compare问题
- 系统权限的设计之简单设计
- 朴素贝叶斯(Bayes)分类器算法
- Linux下设置cpu的亲和性(affinity)
- C++关键字explicit
- gxpt之快速部署jar到jboss的bat脚本
- 解决GDI闪烁问题
- hdu 2665 Kth number_划分树
- thinkphp3.2标签中数组的使用