我有一段C#代码能够在Linux和Windows上运行。在自动化构建过程中,团队城市(TeamCity)构建服务器会运行单元/集成测试。如果代码发生更改,它将触发Linux和Windows的构建,并且相同的单元测试将在Linux和Windows上执行。
这些构建代理使用git来下载源码、构建和进行测试。
期望的行为是,在Linux代理上使用Linux风格的(LF)换行符的源代码,而Windows代理的代码则使用Windows风格的(CR LF)换行符。原因是该代码将多行字符串字面量作为某些单元测试的输入,并且被测试的代码使用Environment.NewLine
。
var example = @"This is a really,
really long string";
我想在Linux和Windows系统中将系统定义的Environment.NewLine出现在字符串中,但是考虑到我的限制,我无法实现这一点。
我无法访问构建代理。任何它需要完成其工作的设置或值都需要捕获在我的源代码中,而不是机器上的某个本地值。 我有一些有限的了解告诉我应该依赖于 .gitattributes
文件,并且虽然我已经看到并且稍微了解了可以在.gitattributes
文件中使用的各种行结束设置。
我不能只配置Windows机器使用core.autocrlf=true
,Linux机器使用core.autocrlf=false
或某些变体,除非我只能通过添加或修改包含在我的存储库中的文件来完成。
考虑到我的限制,是否有一种使用Git来实现这一点的方法?