Cygwin 每个文件的性能行结尾

Cygwin 每个文件的性能行结尾,cygwin,perforce,Cygwin,Perforce,我的基于Performance的项目支持Linux和Cygwin平台,并使用相同的shell脚本(例如build\u project.sh)。但是Perforce将文本文件的行尾默认为本地平台()。这会导致\r\n脚本中的换行符在Cygwin上失败 到目前为止我想到的一些想法: 是否有方法使Cygwin接受\r\n文件?(无需运行dos2unix,文件以只读方式获取) 有没有一种方法可以将特定文件设置为文本,但每个人都可以使用Unix行结尾?(我猜是“没有”,但我想我会检查一下。) 当然,我可以

我的基于Performance的项目支持Linux和Cygwin平台,并使用相同的shell脚本(例如
build\u project.sh
)。但是Perforce将文本文件的行尾默认为本地平台()。这会导致
\r\n
脚本中的换行符在Cygwin上失败

到目前为止我想到的一些想法:

  • 是否有方法使Cygwin接受\r\n文件?(无需运行
    dos2unix
    ,文件以只读方式获取)

  • 有没有一种方法可以将特定文件设置为文本,但每个人都可以使用Unix行结尾?(我猜是“没有”,但我想我会检查一下。)

  • 当然,我可以将整个工作区的行尾设置为
    \n
    (unix)。但这会使Windows客户端不满意其
    .bat
    文件是
    \n
    而不是
    \r\n
    。另外,如果设置为“每个工作区”(我想不起来),那么对于新Windows用户来说,工作区设置会稍微困难一些,因为他们必须设置该选项

  • .sh
    文件设置为“二进制”,但是我们会丢失这些文件上的文本差异。有解决办法吗?这是常见的(好的)黑客吗

  • 这是一个相当小的错误,但我怀疑你们中的一些人对此模式有BKM

    谢谢

    编辑:Craig在中的回答似乎表明,如果文件最初是以这种方式提交的,那么使用Unix行结尾只会使带有
    \r\n
    的文件处于孤立状态


    编辑:要强制bash(即Cygwin)接受带有
    \r\n
    结尾的文件,可以在脚本中指定
    set-o igncr
    。如果有人希望Cygwin用户不太懂Unix(我的情况),或者由于其他原因无法在下面的解决方案中全局应用触发器,那么这很好。

    我相信,当您安装Cygwin时,您可以将其配置为使用Windows行结束符。尽管如此,撇开这一点不谈:

    如果您对每个人都使用“unix”行尾,那么您的所有文本文件都将有自己内部一致的行尾(但不一定与客户端平台一致)。这是因为Windows文件最终会将\r作为行内容的一部分,因此当以“unix”格式同步时,它们会有\r\n结尾

    在执行此操作时,需要注意的是混合和匹配LineEnd设置--如果具有“win”或“local”LineEnd的用户同步同一文件,则现在他们有\r\n结尾!因此,如果您想使用每文件行结束计划,请确保每个人都使用“unix”作为其行结束。使用触发器很容易做到这一点,例如:

    Triggers:
        form-in client "sed -i %quote%s/LineEnd:.*/LineEnd: unix/%quote% %formfile%"