我正在一台 Windows 和一台用作 gitlab-runners 的 GNU/Linux 机器上克隆一个存储库。当 runner 的工作开始时,代码已经被检出。
我需要这些文件在两个平台上具有相同的行尾。这是柯南的要求:将上传一些文件并且它们的校验和必须匹配,因此它们必须使用相同的行尾字符约定。所以让我们到处使用LF。
我的问题是我无法控制克隆的完成方式。我可以设置一些 gitlab-ci 变量来控制克隆的完成方式,例如 GIT_SUBMODULE_STRATEGY 等,但没有控制行结尾。因此,一旦克隆完成,我需要找到一种干净的方法来更改整个存储库 + 子模块的行尾。
显而易见的答案是使用git config --global core.crlf false
,但有几个问题:
- 行尾约束仅在构建柯南包时存在,所以我宁愿没有这个全局的,以防跑步者构建其他东西
- 如果从 runner 作业中调用它,它将不起作用(到那时代码已经被签出)
因为1
我尝试了一些东西git config core.crlf false
(没有--global
),但问题2
仍然存在。还有问题3
:
- 它不适用于子模块
我试图解决的问题2
:
git reset --hard
更改后autocrlf
不会更改行尾。git checkout .
更改后autocrlf
更改它们,但并非总是如此(在主仓库中工作,在子模块中不起作用)
所以我正在寻找一种从已经克隆的存储库中获取 LF 行结尾的方法,并且可以与子模块一起使用。