我们在不同平台上都有大量使用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行结尾。
欢迎任何其他有关克服这种情况的建议。
答案 0 :(得分:3)
一种方法是要求开发团队强制执行行结束。
linux和unix上的dos2unix和unix2dos工作得很好。 Windows上的cywgin将提供一个实现。您可以使用一个脚本来清理人们在签入之前运行的行结尾。
我的主要建议是切换到另一个版本控制系统或关闭魔术换行。我从来没有为我提供魔术换行转换,我的开发团队一直都有标准编码。它没有完美地工作,但它的工作非常好。
您还可以编写一个简单的脚本,该脚本将在持续集成环境中运行,以扫描增加换行符的更新。然后,您可以拒绝更改或清除问题。
祝你好运, 雅各布答案 1 :(得分:3)
我看到用CVS弄乱行结尾的唯一原因是你将文件从一个操作系统复制到另一个操作系统。如果你这样做,你就是在手动规避VCS。那当然是在惹麻烦。所以要么停止这样做,要么记得自己清理干净。
我不知道在CVS中自动检查甚至解决此问题的方法。您考虑过切换到SVN吗?它的预提交钩子可能是一种方法。 OTOH,一旦你进入SVN领域,凭借对快速创建和销毁私有分支的支持,你可能永远不再绕过VCS:在一个平台上创建一个分支,在另一个平台上检查你的更改,在另一个平台上平台切换到该分支,并继续在那里工作。重复完成,将分支合并到主干中,然后将其删除。不要将文件从一台机器偷偷带到VCS后面的另一台机器上。不用担心的一件事。
答案 2 :(得分:0)
您可以使用常规命令选项“--lf”强制unix行结束。
例如: cvs --lf up