如何同步 Ubuntu WSL 和 MIGW 主目录

如何同步 Ubuntu WSL 和 MIGW 主目录

所以我习惯使用适用于 Windows mingw 的 Git 并在那里设置 ssh 密钥。

最近在 WSL(Linux 的 Windows 子系统)上采用了 Ubuntu 18,并意识到 Ubuntu 中的主文件夹与 MinGW 的主文件夹不同

MinGW 使用我实际的 Windows 主文件夹(通常为 C:\Users\eric)和位于 C:\Users\eric.ssh 中的 ssh 文件夹

Ubuntu WSL 对 /home/eric 使用了不同的文件夹,而 Ubuntu 中的 .ssh 显然不是同一个文件夹。

知道目前不支持 Windows 进程编辑 WSL 中公开的文件的主文件夹(VolFS 元数据同步问题,请谷歌搜索)但是,至少保持我的 .ssh 文件夹同步就好了。

正确的做法是什么?

我不知道 MinGW 如何挂载主文件夹,也不知道如何将 Ubuntu 的主文件夹引用(或至少 .ssh 文件夹)移动到 C:\Users\eric.ssh

答案1

知道 Windows 进程目前不支持编辑 WSL 中公开的文件的主文件夹(VolFS 元数据同步问题,请谷歌搜索)

如果你指的是这个问题或其衍生产品,请注意,这个问题很久以前就已解决(如 Microsoft 博客文章中所述),方法是为 WSL 创建 DrvFs 访问方法。从 Git Bash 中,您可以使用:

cd //wsl\$/Ubuntu-18.04
# Substitute proper distro name if needed

我个人绝对不建议“移动”任何一个主文件夹(即尝试使用任一系统的文件夹作为另一个系统的主文件夹)。您可能会遇到权限/所有权问题、不同的 UID/GID 等。在我看来,“同步”两者会是一个更好的策略。

但是,这个问题过去也出现过,一般建议使用 git 存储库在“主机”(本例中为 WSL/Ubuntu 和 Git Bash)之间存储/同步共享配置文件。有许多实用程序旨在简化此操作,并提供了一个很好的列表这里。我个人没有使用过其中任何一个,但我读过关于 GNU Stow 的好评。

注意:从您的个人资料来看,您在 git 方面的专业知识似乎比我多,但在我看来(如果需要)您可以创建一个钩子,这样每当您将更改推送到 Git Bash 端的配置存储库时,它都会自动运行类似以下操作:

wsl -e sh -c "git --git-dir=$HOME/.dotfiles pull

这使用wslWindows 中的命令来调用 Ubuntu 实例中的命令。不过,您需要某种方式来仅在从 Git Bash 提交时运行钩子。或者,您可以编写脚本,以便git如果提交是在 WSL/Ubuntu 中完成的,它会在 Git Bash 中调用,反之亦然。

或者这可能是过度杀伤/过度架构;-)

相关内容