首页
/ Octo.nvim中PR审查界面文件加载超时问题的分析与修复

Octo.nvim中PR审查界面文件加载超时问题的分析与修复

2025-06-29 18:28:57作者:翟江哲Frasier

在Octo.nvim插件的使用过程中,开发者发现当在Pull Request审查界面切换至新添加的文件时,系统会报错"Error fetching <file_name>"。经过分析,这个问题源于文件加载状态判断逻辑的缺陷。

问题本质

当前实现中,文件加载完成的判断标准是基于左右两侧文件内容行数是否大于0。这种判断方式存在两个明显缺陷:

  1. 对于新创建的空文件,其行数确实为0,但系统错误地认为加载未完成
  2. 异步加载过程中,初始行数数组为空是正常现象,不应作为加载失败的依据

解决方案

修复方案引入了两个新的状态标志位:

  • left_fetched:标记左侧文件是否已完成加载
  • right_fetched:标记右侧文件是否已完成加载

在文件内容获取的回调函数中,不仅设置文件内容,还会同步更新这些状态标志。判断条件从简单的行数检查改为验证这两个标志位,这样能够:

  • 正确处理空文件情况
  • 准确反映异步加载的真实状态
  • 避免误判导致的超时错误

技术实现细节

在FileEntry类的初始化中新增了两个布尔型状态变量:

left_fetched = false,
right_fetched = false,

在文件获取逻辑中,无论是通过本地commit获取还是远程仓库获取,都会在回调函数中设置对应的标志位:

utils.get_file_at_commit(left_path, left_sha, function(lines)
  self.left_lines = lines
  self.left_fetched = true  -- 新增状态标记
end)

最终的就绪判断修改为:

function FileEntry:is_ready_to_render()
  return self.left_fetched and self.right_fetched
end

总结

登录后查看全文
热门项目推荐
相关项目推荐