我有一个全新的本地 Terraform 项目,刚刚从 gitlab 克隆出来。我没有对代码进行任何更改,但是运行时terraform init
出现以下错误,该项目中的每个模块都会重复出现此错误:
Error: Failed to download module
Could not download module " <module name>"
(<filename>.tf:<line #>) source code from
"git::<gitlab address>":
error downloading
'<gitlab address>':
C:\Program Files\Git\cmd\git.exe exited with 1: error: Your local changes to
the following files would be overwritten by checkout:
README.md
Please commit your changes or stash them before you switch branches.
Aborting
每个模块下载都会在同一个文件上失败:README.md
。同样,我没有对项目中的任何文件进行任何更改。
我最初的想法是,这可能与行尾问题有关:我使用的是 Windows,而远程存储库中的模块文件是在 Mac 上创建的。为了解决这个问题,我运行了命令git config --global core.autocrlf true
(遵循建议这里)
然后我删除了 .terraform 文件夹并重新运行terraform init
,但出现同样的错误。
我错过了什么?
答案1
似乎你遇到了同样的问题这里,这更像是 Git 行为,而不是 Terraform。尝试添加此 Github 问题中提到的短期解决方法(通过--depth
在您的模块中添加source
)。
但是,如果它连续运行多个 git 命令,从而加剧了这个问题,那么一个短期的解决方法(直到可以在 Git 中解决这个问题)可能是在源地址中设置查询参数depth=1,例如github.com/foo/bar?ref=v1.2.3&depth=1。在当前实现中,Terraform 通过运行 git clone --depth=1 --branch=v1.2.3 来实现浅克隆模式,这避免了单独签出步骤的需要,尽管我不记得 Git 是否会接受看起来像标签名称的内容作为此上下文中的有效 --branch=,或者它是否特别需要 refs/heads/... 引用。