Skip to content

refactor(cmd/gf): Optimize run command to reload only on actual file changes#4476

Merged
hailaz merged 2 commits intogogf:masterfrom
windvalley:master
Oct 16, 2025
Merged

refactor(cmd/gf): Optimize run command to reload only on actual file changes#4476
hailaz merged 2 commits intogogf:masterfrom
windvalley:master

Conversation

@windvalley
Copy link
Contributor

@windvalley windvalley commented Oct 16, 2025

优化run命令使得只在文件有写入事件时才触发reload:
gf run 的文件监控逻辑之前会对所有文件系统事件做出响应,包括非内容修改的事件(如文件access time变化),这会导致开发过程中不必要的频繁重载。本次修改在文件监控回调中增加了event.IsWrite()的判断,确保只有在文件内容被实际写入时才触发重载逻辑,优化了开发体验。

gf run 的文件监控逻辑之前会对所有文件系统事件做出响应,包括非内容修改的事件(如文件access time变化),这会导致开发过程中不必要的频繁重载。本次修改在文件监控回调中增加了event.IsWrite()的判断,确保只有在文件内容被实际写入时才触发重载逻辑,优化了开发体验。
@windvalley windvalley changed the title refactor(cmd/gf): 优化run命令使得只在文件有写入事件时才触发reload refactor(cmd/gf): Optimize run command to reload only on file write events Oct 16, 2025
@hailaz
Copy link
Contributor

hailaz commented Oct 16, 2025

@windvalley
这里说的只修改access time是在哪个事件下的?实际上创建 删除 移动 重命名都是需要触发构建的吧?
我了解到部分用户反馈说goland会频繁触发构建,但我没有条件复现。

除了忽略掉非Write, 也忽略掉非Create、Remove、Rename的事件组合,确保了只有在代码内容或结构发生实质性变化时才触发重载。
@hailaz hailaz merged commit 1d4e684 into gogf:master Oct 16, 2025
18 checks passed
@windvalley
Copy link
Contributor Author

windvalley commented Oct 16, 2025

@windvalley 这里说的只修改access time是在哪个事件下的?实际上创建 删除 移动 重命名都是需要触发构建的吧? 我了解到部分用户反馈说goland会频繁触发构建,但我没有条件复现。

@hailaz 我在使用warp终端时,当项目仓库中git暂存区有内容时,就会反复触发chmod事件的reload,直到暂存区内容被清空或提交后,才不会reload。考虑到chmod事件并不会对代码产生实质变化没必要reload,所以可以忽略掉。已经更新代码,把您说的其他对代码有实质影响的event场景也考虑进去了:)

@windvalley windvalley changed the title refactor(cmd/gf): Optimize run command to reload only on file write events refactor(cmd/gf): Optimize run command to reload only on actual file changes Oct 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants