gpt4 book ai didi

linux - Git - 在 Linux 上使用 Linux 风格的行尾,在 Windows 上使用 Windows 风格的行尾

转载 作者:行者123 更新时间:2023-12-03 09:49:52 25 4
gpt4 key购买 nike

我有可以在 Linux 和 Windows 上运行的代码(用 C# 编写)。作为自动构建过程的一部分,单元/集成测试在 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 来完成此操作?

最佳答案

I can't just configure the Windows machines to use core.autocrlf=true and the Linux machines to use core.autocrlf=false

完美,core.autocrlf should (almost) always be set to false, anyway .

代码本身应该只是 LF:它会被 Windows 和 Linux 上的 IDE 正确解释。

对于字符串,单元测试代码应该:

  • 检测操作系统
  • 根据操作系统将测试中使用的所述字符串转换为使用 LF 或 CRLF

意思是:Git 与单元测试应该如何运行无关。
所述单元测试不应依赖于是否正确配置了外部工具(这里是版本控制工具)。它们应该独立于任何 .gitattributes 正确运行:它们的代码应该负责构建预期的结果。

关于linux - Git - 在 Linux 上使用 Linux 风格的行尾,在 Windows 上使用 Windows 风格的行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61744636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com