2

我正在一台 Windows 和一台用作 gitlab-runners 的 GNU/Linux 机器上克隆一个存储库。当 runner 的工作开始时,代码已经被检出。

我需要这些文件在两个平台上具有相同的行尾。这是柯南的要求:将上传一些文件并且它们的校验和必须匹配,因此它们必须使用相同的行尾字符约定。所以让我们到处使用LF。

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

显而易见的答案是使用git config --global core.crlf false,但有几个问题:

  1. 行尾约束仅在构建柯南包时存在,所以我宁愿没有这个全局的,以防跑步者构建其他东西
  2. 如果从 runner 作业中调用它,它将不起作用(到那时代码已经被签出)

因为1我尝试了一些东西git config core.crlf false(没有--global),但问题2仍然存在。还有问题3

  1. 它不适用于子模块

我试图解决的问题2

  • git reset --hard更改后autocrlf不会更改行尾。
  • git checkout .更改后autocrlf更改它们,但并非总是如此(在主仓库中工作,在子模块中不起作用)

所以我正在寻找一种从已经克隆的存储库中获取 LF 行结尾的方法,并且可以与子模块一起使用。

4

0 回答 0