Как синхронизировать домашний каталог 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, и наоборот.

Или это может быть излишним/чрезмерной архитектурой ;-)

Другие вопросы по тегам