【问题标题】:git autoclrf management for teams on different environmentsgit autoclrf 管理不同环境下的团队
【发布时间】:2013-09-11 03:53:09
【问题描述】:

刚搬到git,遇到一个问题,已经详细讨论过here

我想了解一下,因为我们默认设置了 core.autocrlf=true 并且我们处理大量的 java i/o,因此有不同的测试用例;我们如何确保 win 上的开发人员开发的单元测试用例可以在 linux 上的开发人员正确执行,反之亦然。

例如。单元测试用例读取文本文件 (*.ext) 并比较预期的字节长度与实际的字节长度 然后赢; 带有 core.autocrlf=true 的 git pull 将拉入文本文件并将所有 LF 转换为 CRLF 。 例如考虑测试用例对字节数感兴趣,因此在获胜时字节数会更多。 提交时 CRLF wud 被转换为 LF ;但是对于 linux 上的开发人员,测试 wud 然后失败了。

这可以用 .gitattributes 管理吗?

在 .gitattributes -> *.ext 文本中

这会使提交时的文件正常化并且仍然会遇到上述问题? 欢迎指点, 提前致谢

【问题讨论】:

    标签: git core.autocrlf


    【解决方案1】:

    正如我之前所说,never set core.autocrlf to true, always to false

    这是一个具有意想不到后果的全局设置。

    如果您有特定类型的文档要在 eol 中进行管理,请仅通过 .gitattributes 文件和 core.eol directives 进行管理。

    在您的情况下,gitattributes 是一个很好的解决方案,可以对您想要转换的内容进行细粒度控制。

    但一般的想法是在绝对必要之前不要转换任何东西:
    如果您可以使用正确的 eol(无论底层操作系统是什么)生成或存储这些文本文件(用于测试),那么您的测试用例将是一致的。

    【讨论】:

    • "如果您可以使用正确的 eol 生成或存储这些 txt 文件" ...我想使用 git 来启用它,因为在一个操作系统中进行修改会导致另一个操作系统失败。你对管理这个有什么建议吗?
    • @sunny 我的意思是生成只有一种 eol 样式的 txt 文件,并在整个操作系统中保持该 eol,这意味着没有 core.autocrlf,没有 .gitattributes core.eol,根本没有转换。这意味着测试将表现一致。
    • 明白了。所以这将成为开发最佳实践,而不是通过 git 解决方案
    • @sunny 是的,根据我的经验,总是尽量限制转换,直到您绝对需要它。
    • 接受这个作为答案。故障可以很容易地在自动化测试构建中发现并修复。一种可以忍受的痛苦。
    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多