Perforce (P4)的文本换行处理设置

CJ过后看到同事拿来的Perforce国内代理商的宣传单,发现已经把有很多游戏开发公司用P4这点作为一个宣传了,再看看目前现在svn项目中的.svn信息所占空间比正式资源还大的情况,决定体验一下这个很多游戏公司都在用的P4

其实从上学再到工作这些年也接触了不少VCS(或者叫SCM),从VSS,CVS再到SVN,GIT,每次尝试一种新的系统时总会看到很多介绍和之前用的系统比的优势的文章(这点Perforce最是夸张,直接在官网上给出了和其它VCS比较的详细PDF文档,如http://www.perforce.com/sites/default/files/pdf/perforce-cvs-comparison.pdf还有http://www.perforce.com/sites/default/files/pdf/perforce-subversion-comparison.pdfhttp://www.perforce.com/sites/default/files/pdf/perforce-git-comparison.pdf看出来商业软件确实是做的比较到位!),虽然很多描述在亲身体会过后感觉并不尽然,不过还是希望P4能带来更多的“然”。

费了这么多话,还是写点正题吧,目前P4也没用的多么深入,更算不上多精通,所以比较之类的话题还是算了吧,记一下关于文本换行处理设置的心得吧。

之前用的VCS并没有太在意过这个line endings的问题,或许是因为曾经不像现在这样要经常往返Mac和Windows之间来做各种跨平台的开发吧,也就没引发什么太大的问题,这次试用P4的过程中没过多久就发现了由于跨平台文本换行导致的问题:在Mac上上传了的文本文件Get到Win上后发现每行都被多换了一行出来,用HEX编辑器看了一下,原来是Mac上上传的文本是在Win下编辑过的,拿回来后所有换行位置都变成了0D 0D 0A,很明显是P4对文本的换行做了处理,官网一查,发现了KB中的一篇专门介绍这个问题的文章:http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings,又一次的让我对商业软件的到位刮目相看!

总的来说就是P4的workspace高级设置中可以指定对文本换行的处理方式,有这么几个选项:local unix mac win share,第一个是依本地系统而定,也是官网推荐的选项,中间3个是强制指定换行为LF CR CRLF,最后一个是指无论本地格式是怎样的,最终都转换成unix的LF。其中介绍share部分提到了针对workspace中混有多种换行符时的问题,并且描述了一种和我遇到的问题类似的情况,并且给出了用share方式的解决建议,起初,我按照建议选择了share的方式,以为其处理逻辑能做到同一文本文件在不同平台上get到的都是对应本平台的换行符格式,但是后来测试submit后立即强行get回来发现所有的文本都被统一变成了LF的换行格式,这让我觉得不免有些捉襟见肘,虽然是不会由于转换导致可能发生的CRCRLF问题,但是却破坏了文本原有的换行符。

最后还是在stackoverflow这个大宝库上发现了一篇经验达人的回复文章,感觉说的还是蛮有道理的:http://stackoverflow.com/a/13636059,他提到强制使用Unix换行符作为各个平台workspace的换行处理方式,理由是这样P4会认为不需要对文本做任何的换行符处理操作(看来P4是以LF为标准的),这样既不会产生误处理多种换行符的文本,又不会破坏文本原有的换行方式,况且现在各个平台上的IDE甚至是想notepad++ sublime等高级文本编辑器都是支持各种换行符的,所以保持文本原有的换行符格式看来才是恰当的选择!

博主友情提示:

如您在评论中需要提及如QQ号、电子邮件地址或其他隐私敏感信息,欢迎使用>>博主专用加密工具v3<<处理后发布,原文只有博主可以看到。