Как синхронизировать домашний каталог Ubuntu WSL и MINGW для меня
Так что я привык использовать Git для Windows mingw и настраивать там ключи ssh.
Недавно принял Ubuntu 18 на WSL (подсистема Windows для Linux) и понял, что домашняя папка в Ubuntu отличается от домашней папки для MinGW.
MinGW использует мою настоящую домашнюю папку Windows (обычно C:\Users\eric), а папка ssh находится в C:\Users\eric.ssh.
Ubuntu WSL использует другую папку для /home/eric, и мой .ssh в Ubuntu явно не та же самая папка.
Зная, что процессы Windows, редактирующие домашнюю папку для файлов, представленных в WSL, в настоящее время не поддерживаются (проблемы синхронизации метаданных VolFS, погуглите), однако было бы неплохо хотя бы синхронизировать мою папку .ssh.
Каким будет правильный способ сделать это?
Я не вижу, как MinGW монтирует домашнюю папку, и я не вижу, как переместить ссылку на домашнюю папку Ubuntu (или, по крайней мере, папку .ssh) в C:\Users\eric.ssh
1 ответ
Зная, что процессы Windows, редактирующие домашнюю папку для файлов, представленных в WSL, сейчас не поддерживаются (проблемы синхронизации метаданных VolFS, погуглите)
Если вы имеете в виду эту проблему или ее производную, то обратите внимание, что проблема была решена давно (как указано в этом сообщении в блоге Microsoft) с созданием метода доступа DrvFs для WSL. Из 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
Это использует
wsl
в Windows, чтобы вызвать команду в вашем экземпляре Ubuntu. Однако вам понадобится какой-то способ запускать хук только тогда, когда вы совершаете коммит из Git Bash. Или вы можете написать сценарий так, чтобы он вызывал
git
в Git Bash, если коммит был сделан в WSL/Ubuntu, и наоборот.
Или это может быть излишним/чрезмерной архитектурой ;-)