代码之家  ›  专栏  ›  技术社区  ›  trampster

cvs行尾

  •  3
  • trampster  · 技术社区  · 15 年前

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

    我们有开发人员使用Windows和Tortoisecvs(使用cvsnt)

    我们有开发人员使用Ubuntu 8.04

    我们的开发人员有两个框:Ubuntu和Windows。

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

    我们的行尾也有很大的问题。它表现为文件中行尾数的持续增长。

    据我所知,Tortoisecvs使用的是cvsnt,它假定存储库中有unix行结尾。签出时,它将Unix行尾转换为Windows行尾;提交时,它将Windows行尾转换回Unix行尾。

    在Ubuntu中,cvs客户机不进行转换,因为存储库应该是unix行尾,而linux也使用unix行尾。

    如果Windows上的每个人都使用基于CVSNT的客户端,这一切都可以正常工作。没有人会切换他们的操作系统。

    不幸的是,拥有Ubuntu和Windows设备的人经常会切换,并可能在不同的操作系统上签出、编辑或提交。

    结果,他们使用LinuxCVS客户机提交了一个文件,该客户机具有Windows行结尾。

    在Windows上使用cvsnt客户机签出时,CRLF转换为CRCRLF,显示为两行。这种情况发生的次数越多,文件中出现的新行就越多。

    有没有一种方法可以让Linux上的cvs在提交时将任何Windows行尾转换为Unix行尾以防止这种情况发生?这样,cvs服务器将只具有unix行尾。

    我们也欢迎您提出其他克服这一问题的建议。

    3 回复  |  直到 8 年前
        1
  •  3
  •   TheJacobTaylor    15 年前

    一种方法是要求开发团队强制执行行尾。

    Linux和Unix上的dos2unix和unix2dos都工作得很好。Windows上的cywgin将提供一个实现。

    您可以有一个脚本来清理人们在签入前运行的行尾。

    我的主要建议是要么切换到另一个版本控制系统,要么关闭魔术线饲料。我从来没有为我提供过神奇的换行转换,我的开发团队一直都有一个标准的编码。它不太好用,但效果很好。

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

    祝你好运, 雅各伯

        2
  •  3
  •   sbi    15 年前

    我看到使用cvs处理行结尾的唯一原因是,如果您将文件从一个操作系统复制到另一个操作系统。如果你这样做的话,你就是在手动规避风险投资。那当然是自找麻烦。所以要么停止这样做,要么记得自己清理。

    我不知道如何在cvs中自动检查甚至修复这个问题。你考虑过换成SVN吗?它的预提交钩子可能是一种实现这一点的方法。Otoh,一旦你在SVN Land,有了它对快速创建和销毁私有分支的支持,你可能永远也不会绕过风险投资:创建一个分支,在一个平台上检查你对该分支的更改,在另一个平台上切换到该分支,并继续在那里工作。重复直到完成,将分支合并到主干中,然后删除它。不要在录像机背后把文件从一台机器偷走到另一台机器上。少担心一件事。

        3
  •  0
  •   Edward Ross    8 年前

    您可以使用常规命令选项--lf强制Unix行结束。

    例如: CVS——LF向上