冷門茶包一枚 - VS Code 版控功能及 Git Grpah 在 RAM Disk 運作異常。

我習慣在工作機開 RAM Disk 放暫存檔,一方面加速一方面減少實體磁碟或 SSD 讀寫耗損;一些可拋式的測試小專案我也會直接開在 RAM Disk 上,重開機後自動消失,省去整理的麻煩。去年升級新主機後,因改裝 Windows 11 重新 Survey RAM Disk 軟體,我選了開源的 ImDisk Toolkit,雖然操作介面略繁瑣(對 CLI 愛用者完全不是問題),但 ImDisk 極其輕巧、效能也好,最重要它是開源專案,程式碼公開透明,不用擔心軟體授權問題。

我遇到的狀況是資料夾下明明有 .git 資料夾,但 VSCode Source Control 判斷成上層目錄並提示 "A git repository was found in the parent folders of the workspace or the open file(s)",需點選 "Open Repository" 選取該資料夾才能開啟:

手動選取目錄後,Source Control [1] 功能可用,git 指令操作也正常 [2],但開啟 Git Graph 會顯示 Unable to load Git Graph,No Git repositories were found in the current workspace when it was last scanned by Git Graph. [3] 無法使用。按 Re-scan the current workspace for repositories [4],會跳出 No Git repositories were found in the current workspace. [5]

對照測試後發現,這問題只發生在 RAM Disk 上。將 SSD 上正常的 Git 專案搬到 RAM Disk 後會壞掉;RAM Disk 上有問題的 Git 專案搬到 SSD 即不藥而瘉,可驗證問題出在 RAM Disk。

使用 Process Monitor 比較二者的檔案存取動作,發現一可疑處。RAM Disk 專案在 Git Graph 執行 git rev-parse --show-toplevel 時會出現 QuerySecurityFile / INVALID DEVICE REQUEST 錯誤。

QuerySecurityFile 關鍵字讓我聯想到這可能跟我的 RAM Disk 一向被設成 exFAT 或 FAT32 有關,這二者都不支援檔案安全權限。為驗證起見,將 RAM Disk 重新格式化為 NTFS,嘿,改為 NTFS VS Code 版控跟 Git Graph 就正常了。

起初推測關鍵在 FAT32/exFAT 不支援存取權限設定,但我試了將一般硬碟分割格式化成 FAT32,實測 Git Graph 卻是正常的! 至此,推論問題只出現在「ImDisk RAM Disk 格式化成 FAT32 或 exFAT」時。由於我蠻常用 RAM Disk 做 Git 實驗,也重度依賴 Git Graph,故將 RAM Disk 改格式化為 NTFS 避開問題。


Comments

# by Jeffrey

to Anonymous,謝分享,我自己也遇到 Camtasia 跟 ImDisk 有相容問題。未來 RAMDisk 使用遇到問題應優先對照檢查。

Post a comment