Windows 克隆git存储库后更改行结束

Windows 克隆git存储库后更改行结束,windows,git,gitlab-ci-runner,conan,Windows,Git,Gitlab Ci Runner,Conan,我正在一台Windows和一台GNU/Linux机器上克隆一个存储库,用作gitlab运行程序。当运行程序的作业开始时,代码已经签出 我需要这些文件在两个平台上具有相同的行尾。这是一个要求:一些文件将被上传,它们的校验和必须匹配,因此它们必须使用相同的行尾字符约定。让我们在任何地方都使用LF 我的问题是我无法控制克隆是如何进行的。我可以设置一些gitlab ci变量来控制克隆的完成方式,比如GIT_SUBMODULE_策略等,但没有一个变量可以控制行的结尾。因此,一旦克隆完成,我需要找到一种干净

我正在一台Windows和一台GNU/Linux机器上克隆一个存储库,用作gitlab运行程序。当运行程序的作业开始时,代码已经签出

我需要这些文件在两个平台上具有相同的行尾。这是一个要求:一些文件将被上传,它们的校验和必须匹配,因此它们必须使用相同的行尾字符约定。让我们在任何地方都使用LF

我的问题是我无法控制克隆是如何进行的。我可以设置一些gitlab ci变量来控制克隆的完成方式,比如GIT_SUBMODULE_策略等,但没有一个变量可以控制行的结尾。因此,一旦克隆完成,我需要找到一种干净的方法来更改整个存储库+子模块的行尾

显而易见的答案是使用
git config--global core.crlf false
,但存在一些问题:

  • 行结束约束仅在构建conan包时存在,因此我不希望在运行程序构建其他包时使用此全局约束
  • 如果从runner作业调用它,它将不起作用(此时代码已经签出)
  • 由于
    1
    的原因,我尝试了
    git config core.crlf false
    (没有
    --全局
    ),但问题仍然存在。还有一个问题
    3

  • 它不适用于子模块
  • 我试图解决的问题
    2

    • git reset——更改
      autocrlf
      后,硬
      不会更改行尾
    • git checkout.
      更改后
      autocrlf
      会更改它们,但不总是更改(在主回购上工作,在子模块内不工作)
    因此,我正在寻找一种从已经克隆的存储库中获取LF行结尾的方法,这将与子模块一起工作。

    中的建议似乎得到了一些支持,我建议在这里发表评论,柯南可能最终会提供一些行结尾不可知的哈希。这是一种新的方法。我明白,就像柯南在这里所能做的一样。更改散列算法将破坏所有包,超出其范围,并且它们可能很难不损坏二进制文件。Git已经有了答案,最好不要重新发明轮子。