【问题标题】:EOL Handling for Windows PipelinesWindows 管道的 EOL 处理
【发布时间】:2018-03-03 11:28:34
【问题描述】:

我有带有 XML 文本文件的 windows 应用程序,我在 windows 上编辑这些文件并签入 GitHub。这些文件在我的开发机器上具有正确的 Windows EOL 格式。然后我通过 Concourse CI 管道使用 Git 资源和 windows worker 来构建 MSI。当我在 Windows 机器上安装 MSI 时,XML 文本文件具有 Linux EOL 格式。

解决此问题的最佳方法是什么?如果我正确理解 Concourse,Git 资源是在 Linux 上运行的 docker 容器,所以我可以看到为什么文件会使用 Unix EOL 格式进行检查,但我不明白为什么在制作容器时它没有转换为 Windows 格式可用于 windows 任务。

更新:稍微复杂一些,我有一些在 Linux 工作器上运行的步骤,因此在 Linux 工作器上使用文件时需要具有 Linux EOL 格式。示例...提取一个 repos 并将其传递给在 Linux 上运行的作业以执行一堆 npm |咕哝 | bower 类型的东西,然后将文件传送给 Windows 工作人员以构建一些 ASP.NET Web API 项目,并将 Linux 输出用作 Web UI,并将其全部打包成 MSI。

【问题讨论】:

    标签: linux windows git eol concourse


    【解决方案1】:

    确保 eol 保持一致的一种更好的方法是通过 .gitattributes core.eol rules 管理它们

    这将避免全局配置(应用于所有 repos)之类的影响

    git config core.autocrlf
    

    如果true,则该全局规则(可能在 ConcourseCI 上处于活动状态)将自动更改 eol。
    但是 .gitattribute 可以添加到您的存储库中,并且具有优先权。这将确保一致性。

    【讨论】:

    • 今天终于有时间看这个了。我无权进行全局更改。我不想在数百个存储库中拥有自定义的 .gitattributes。我注意到默认情况下正确处理了 .XML 文件 EOL。 .CONFIG(也是 XML)不是。我想知道在将文件移动到 Windows Worker 时,Concourse 中是否有一些东西可以理解更新 XML 文件的 EOL,但它不知道对 .CONFIG 文件执行此操作。
    • @ChristopherPainter 注意:您可以拥有一个全局 gitattributes 文件,适用于所有 repos:stackoverflow.com/a/28027656/6309
    猜你喜欢
    • 1970-01-01
    • 2016-02-19
    • 2010-09-06
    • 1970-01-01
    • 2023-04-02
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多