CVS行结束

我们有大量的程序员在不同的平台上使用CVS。

我们有开发人员使用Windows与TortoiseCVS(使用cvsNT)

我们有开发人员使用Ubuntu 8.04

我们有两台Ubuntu和Windows的开发者。

不同的开发人员在不同的平台上使用各种不同的编辑器。

我们在线路结束方面遇到了很大的问题。 这performance为文件中行结尾数量的持续增长。

现在,据我了解,TortoiseCVS使用cvsNT,它假定存储库中的UNIX行结束符。 当你检出它时,将UNIX行结束转换为Windows行结尾,当你提交它时,将Windows行结束符转换回UNIX行尾。

在ubuntu中,cvs客户端不做任何转换,因为存储库应该是UNIX行结束符,而linux也使用UNIX行结束符。

这一切工作正常,只要在windows上的每个人使用基于cvsNT的客户端。 没有人切换他们的操作系统。

不幸的是,Ubuntu和Windows系统的用户经常切换,并可能在不同的操作系统上签出,编辑或提交。

因此,他们最终使用具有窗口行尾的linux CVS客户端来提交文件。

当在窗口上使用cvsNT客户端签出时,CRLF被转换为显示为两行的CRCRLF。 这种情况发生的次数越多,文件中出现的新行越多。

有没有办法让Linux上的CVS将任何Windows行结束符转换为UNIX行结尾,以防止发生这种情况。 这样CVS服务器将只有UNIX行结束符。

任何其他的解决方法的build议也是受欢迎的。

一种方法是要求开发团队执行行结束。

dos2unix和unix2dos在linux和unix上都很好。 Windows上的cywgin将提供一个实现。

你可以有一个脚本来清理人员在登记之前运行的行结束符。

我的主要建议是要么切换到另一个版本控制系统,要么关闭神奇的换行。 我从来没有为我提供魔术换行转换,我的开发团队总是有一个标准的编码。 它没有完美的工作,但它工作相当不错。

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

祝你好运,雅各布

我已经看到了用CVS搞乱行结尾的唯一原因是如果你从一个操作系统复制文件到另一个。 如果你这样做,你手动规避了VCS。 这当然是在惹麻烦。 所以要么停止这样做,要么记得自己清理。

我不知道有一种方法可以自动检查甚至修复CVS。 你有没有考虑切换到SVN? 这是预先提交钩子可能是一个方法来做到这一点。 OTOH,一旦你在SVN的土地上,以及其支持迅速创建和销毁私人分支,你可能永远也不会绕过VCS:创建一个分支,在一个平台上检查你在这个分支上的变化,在另一个平台切换到该分支,并继续在那里工作。 重复,直到完成,将您的分支合并到主干,并删除它。 VCS背后没有一台机器的文件偷偷地进入另一台机器。 有一件事不用担心。

您可以使用常规命令选项“–lf”来强制unix行结束。

例如:cvs –lf up