linux – CVS行结尾

我们在不同平台上都有大量使用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将提供一个实现.

您可以使用一个脚本来清理人们在签入之前运行的行结尾.

我的主要建议是切换到另一个版本控制系统或关闭魔术线源.我从来没有为我提供魔术换行转换,我的开发团队一直都有标准编码.它没有完美的工作,但它的工作非常好.

您还可以编写一个简单的脚本,该脚本将在持续集成环境中运行,以扫描增加换行符的更新.然后,您可以拒绝更改或清除问题.

祝好运,
雅各

上一篇:CVS与SVN


下一篇:java-如何为我导入的项目更改CVS用户名