适用于 VS Code 的 Looker 扩展程序采用本地优先的开发模式。此模型在本地文件系统、Looker 实例的开发模式和远程 Git 代码库之间维持三向关系。
本指南介绍了扩展程序如何同步文件,以及本地 Git 操作如何影响 Looker 项目。
同步机制
该扩展程序会自动管理本地 IDE 与 Looker 服务器之间的文件内容同步。
打开文件(打开时读取)
当您在本地 IDE 中打开 .lkml 文件时,该扩展程序会自动从 Looker 实例的开发模式中已签出的分支中提取该文件的当前版本。这样可确保您始终使用的是最新版本的代码。
保存文件(写入时保存)
当您在本地保存文件时(在 Mac 上按 Command-S,在 Windows/Linux 上按 Ctrl+S),该扩展程序会立即将您的本地更改推送到 Looker 服务器。然后,当您处于开发模式时,这些更改会显示在基于浏览器的 Looker IDE 中。
处理同步冲突
如果某个文件在基于浏览器的 Looker IDE 中进行编辑时,同时也在 VS Code 中处于打开状态,则可能会发生冲突。
默认情况下,扩展程序会将 Looker 服务器上的版本覆盖为本地 VS Code 版本。
不过,如果您已启用 looker.askBeforeOverwritingRemote 设置,则当您尝试保存在服务器上修改过的文件时,VS Code 会显示警告。您可以选择执行以下任一操作:
- 查看差异:打开差异编辑器,比较文件的远程版本和本地版本之间的更改。借助此选项,您可以逐行选择性地查看和合并更改,以解决冲突并将合并后的本地更改同步回 Looker 服务器。
- 覆盖远程:使用本地 VS Code 版本覆盖 Looker 服务器上的版本。
- 覆盖本地:使用 Looker 服务器中的版本覆盖本地文件。
looker.askBeforeOverwritingRemote 设置默认处于停用状态。
本地 Git 操作
该扩展程序会同步文件内容,但您应使用本地终端或本地 IDE 的“源代码控制”标签页中的标准 Git 命令来管理 Git 代码库。
管理分支
当您使用 git checkout 在本地切换分支时,该扩展程序会检测到更改,并自动将 Looker 服务器上的会话切换到匹配的分支。
在 Looker 同步文件更改之前,VS Code 的 Looker 扩展程序会验证本地 Git 分支是否与 Looker 开发模式分支匹配,如果分支不一致,则会自动暂停同步,从而防止跨分支覆盖。如果出现不匹配的情况,系统会显示一个互动式提示,让您选择切换远程 Looker 工作区或在本地检出分支,并在对齐后自动使缓存的文件哈希失效,以便安全地恢复同步。
Looker 中的 Git 状态
保存文件更改后,这些更改会同步到您的 Looker 实例,并在基于浏览器的 Looker IDE 中显示为未提交。如果您在本地环境中使用 Git 提交这些更改,那么在您将这些更改推送到远程仓库之前,它们在 Looker IDE 中仍会显示为未提交。
使用 git push 时,Looker 实例会从远程仓库中拉取已提交的更改。在 Looker 实例从远程拉取后,您已提交并推送的更改将不再在 Looker IDE 中显示为未提交。只有已保存到本地但尚未提交和推送的文件才会显示为“未提交”。
验证 LookML
每次保存更改时,该扩展程序都会自动运行 Looker LookML 验证器。验证器返回的任何语法和模型错误都会以内嵌方式显示在本地 IDE 中的文件中。如果您愿意,也可以使用 Looker: Validate LookML 命令面板命令手动运行 LookML 验证器,而无需保存文件。