VS Code的奇妙Bug,可能導致未保存內容的丟失

VS Code的奇妙Bug,可能導致未保存內容的丟失

來自專欄前端設計與編程144 人贊了文章

昨晚肝項目的時候,無意中找到了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.com圖標

目前已被加入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從來都是難事,尤其是這種有一定體量的項目。

推薦閱讀:

Mantis 搭建及自定義心得
Bug追蹤管理簡史
Weekly Beta Apps 第5期
Pyinstaller打包Python程序以及常見bugs

TAG:Bug | VisualStudioCode | 微軟Microsoft |