我们在不同平台上都有大量使用CVS的程序员.
我们有开发人员使用带有TortoiseCVS的窗口(使用cvsNT)
我们有开发人员使用ubuntu 8.04
我们的开发人员有两个盒子Ubuntu和windows.
不同开发人员在不同平台上使用各种不同的编辑器.
我们在线路结束时遇到了很大的问题.这表现为文件中行结尾数量的不断增长.
据我所知,TortoiseCVS使用cvsNT,它假设存储库中有UNIX行结尾.当你签出时,它将UNIX行结尾转换为windows行结尾,当你提交它时,将windows行结尾转换回UNIX行结尾.
在ubuntu中,cvs客户端不进行转换,因为存储库应该是UNIX行结尾,而linux也使用UNIX行结尾.
这一切都很好,只要Windows上的每个人都使用基于cvsNT的客户端.没有人切换他们的操作系统.
可悲的是,使用Ubuntu和Windows机器的人经常切换,可能会在不同的操作系统上签出,编辑或提交.
结果他们最终使用具有Windows行结尾的linux CVS客户端提交文件.
当在Windows上使用cvsNT客户端签出时,CRLF将转换为CRCRLF,显示为两行.这种情况发生的次数越多,文件中出现的新行就越多.
有没有办法让Linux上的CVS将任何Windows行结尾转换为提交的UNIX行结尾,以防止这种情况发生.这样,CVS服务器将只有UNIX行结尾.
任何其他建议如何克服这一点也是受欢迎的.
解决方法:
一种方法是要求开发团队强制执行行结束.
linux和unix上的dos2unix和unix2dos工作得很好. Windows上的cywgin将提供一个实现.
您可以使用一个脚本来清理人们在签入之前运行的行结尾.
我的主要建议是切换到另一个版本控制系统或关闭魔术线源.我从来没有为我提供魔术换行转换,我的开发团队一直都有标准编码.它没有完美的工作,但它的工作非常好.
您还可以编写一个简单的脚本,该脚本将在持续集成环境中运行,以扫描增加换行符的更新.然后,您可以拒绝更改或清除问题.
祝好运,
雅各