文件夹
文件夹窗格列出了 Mac 上共享到此工作区虚拟机中的文件夹。共享文件夹是你真实文件系统与沙箱之间的桥梁:代理在这里读取它所处理的代码,并写入它所做的更改。虚拟机接触的其他一切——它的主目录、它的系统磁盘——都是一次性的、隔离的;而共享文件夹不是。它是一个通向你 Mac 的实时读写窗口。
窗格的说明文字精确地陈述了规则:每个文件夹都以其真实名称挂载到虚拟机中(例如 ~/Documents → ~ubuntu/Documents)。每个工作区最多 8 个文件夹。 未配置任何文件夹时,显示为未共享文件夹。
文件夹如何共享
你添加的每个文件夹都会作为 virtiofs 共享附加到虚拟机上,并挂载在 /home/ubuntu/<basename>,其中 <basename> 是该文件夹自身的名称。共享 ~/Documents 会使它在虚拟机内显示为 ~ubuntu/Documents(即 /home/ubuntu/Documents);共享 ~/code/bromure 则显示为 /home/ubuntu/bromure。挂载名称仅使用路径的最后一部分,因此来自不同位置但基名相同的两个文件夹会发生冲突——如果你需要同时使用两者,请为其中一个指定不同的目录名称。
该共享是读写的。虚拟机内的代理可以像 Mac 上的本地进程一样,在共享文件夹中创建、修改和删除文件,而这些更改会立即且永久地反映到宿主机一侧。这正是工作区有用之处:代理就地编辑你的工作副本,而 Mac 上的 git、你的编辑器和其他工具会实时看到这些编辑。
由于共享是在启动时配置虚拟机时附加的,因此对此列表的更改会在工作区的虚拟机下次启动时生效。在会话运行期间添加或移除文件夹不会热插拔——请先存储更改,然后重启会话以使其生效。
警告: 共享文件夹不属于沙箱。它会在任何重置虚拟机的操作后依然存留。显式删除工作区不会触及它——确认对话框显示“已挂载的宿主机文件夹保持不变。”——而且如果某个工作区被标记为已泄露并被清除,其共享文件夹不会被清除,可能仍然保存着代理写入的文件。只共享代理确实需要的文件夹,并在任何泄露事件后手动检查共享文件夹。有关泄露流程,请参阅凭据与传输边界。
添加和移除文件夹
要共享文件夹,请点击窗格底部的添加文件夹…。这会打开一个目录选择器,你可以在其中一次选择一个或多个文件夹;每个选定的目录都会成为一个新行。一旦工作区已有八个文件夹(每个工作区的上限),该按钮就会被禁用。
每个已配置的文件夹显示为一行,其中包含文件夹名称及其在 Mac 上的完整路径。点击某行上的减号按钮可停止共享该文件夹;在这里移除某一行绝不会删除宿主机上的文件夹或其内容——它只是在下次启动时将其从虚拟机上分离。
当前共享的文件夹列表在运行中的会话里也可见:会话窗口的信息面板会显示一个共享文件夹列表,因此你可以一目了然地确认代理能访问哪些内容。请参阅会话。
设置参考
| 设置 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| 文件夹列表 | 宿主机路径列表 | 空 | 每行显示文件夹名称及其完整宿主机路径,并带有一个用于移除的减号按钮。以读写方式挂载在 /home/ubuntu/<basename>。 |
| 添加文件夹… | 目录选择器(多选) | — | 添加一个或多个文件夹。一旦配置了八个文件夹即被禁用。 |