Cygwin 每个文件的性能行结尾
我的基于Performance的项目支持Linux和Cygwin平台,并使用相同的shell脚本(例如Cygwin 每个文件的性能行结尾,cygwin,perforce,Cygwin,Perforce,我的基于Performance的项目支持Linux和Cygwin平台,并使用相同的shell脚本(例如build\u project.sh)。但是Perforce将文本文件的行尾默认为本地平台()。这会导致\r\n脚本中的换行符在Cygwin上失败 到目前为止我想到的一些想法: 是否有方法使Cygwin接受\r\n文件?(无需运行dos2unix,文件以只读方式获取) 有没有一种方法可以将特定文件设置为文本,但每个人都可以使用Unix行结尾?(我猜是“没有”,但我想我会检查一下。) 当然,我可以
build\u project.sh
)。但是Perforce将文本文件的行尾默认为本地平台()。这会导致\r\n
脚本中的换行符在Cygwin上失败
到目前为止我想到的一些想法:
dos2unix
,文件以只读方式获取)\n
(unix)。但这会使Windows客户端不满意其.bat
文件是\n
而不是\r\n
。另外,如果设置为“每个工作区”(我想不起来),那么对于新Windows用户来说,工作区设置会稍微困难一些,因为他们必须设置该选项.sh
文件设置为“二进制”,但是我们会丢失这些文件上的文本差异。有解决办法吗?这是常见的(好的)黑客吗\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%"