昨晚肝项目的时候,无意中找到了vscode的一个bug,提issue后在知乎发了一条想法。但是这个bug复现起来相对很容易,想着还是过来详细说(shui)说(shui),免得更多人受此毒害。

这个bug是这样的:当你用vscode打开了一个文件夹并编辑其中一个文件时,如果进行以下两种操作之一,未保存的内容会完全丢失:在侧边栏把文件重命名,只更改大小写。如把“test.txt”改成“Test.txt”;

在侧边栏把文件重命名为一个不同的名字,再改回和原文件名大小写不同的形式。如把“test.txt”改成“a.txt”,再改成“Test.txt”。

以下是第一种重现方式的录屏:

这应该是个隐蔽的神坑了。还好我发现的时候文件修改内容不多,不然工作出了偏差我找谁说理去……

issue已经提出:Unsaved content will be lost after replacing the filename with the “same” one · Issue #56384 · Microsoft/vscode​github.com9f9ad3734911d22a2e6e4d742ca6b9d2.png

目前已被加入8月份的milestone,估计不久就会被解决。还有幸被vscode团队的小哥哥傲娇地夸了一句good catch。

虽然知道这句短语的意思,求知欲旺盛的我还是想深入了解一下,结果一查就开始慌了:

我就不该手抖这一下!!→_→

最后还是想提醒大家,在修复问题并发布release之前注意这个bug。在敲代码时,完成一个小目标就按一次ctrl+s总是个好习惯。

更新:目前issue的assignee已经在源码层面修复了该问题,动作真的很快。fix #56384 · Microsoft/vscode@723d7ba​github.com

简单看了一下diff,改动的地方在文件move操作的部分。在对move的目标地址进行检查的时候,统一不忽略大小写(看来以前这个bug在linux以外的系统上都存在)。

其实提出issue之后我也看了看源码,但真的有点无从下手,于是败下阵来……修bug可能只需几秒,但定位bug从来都是难事,尤其是这种有一定体量的项目。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐