Как (полу)автоматически синхронизировать локальные файлы с удаленным разработчиком?

#vscode-remote

Вопрос:

Моя Цель

Я уже некоторое время использую devcontainers в сочетании с WSL2. Но я продолжаю сталкиваться с проблемами, и, кроме того, мне нравится загружать ресурсы моего ноутбука на сервер. Перемещение контейнеров на собственный сервер Linux решило бы мои проблемы.

Моя идеальная ситуация состояла бы в том, чтобы иметь решение, которое работает так же, как локально на моем ноутбуке с Windows (позже, вероятно, переедет на Macbook), но использует возможности сервера Linux (у которого есть systemd и netns), а также переносит рабочую нагрузку туда, чтобы мой ноутбук не звучал как пылесос.

Мое путешествие

Я пытаюсь настроить удаленные контейнеры, как описано здесь: https://code.visualstudio.com/remote/advancedcontainers/develop-remote-host

На самом деле контейнеры работают нормально, я использую второе решение для хранения, что означает, что я добавляю следующее в свой файл .devcontainer.json:

 "workspaceMount": "source=/home/marvink/code,target=/workspaces,type=bind,consistency=cached"
 

И мой рабочий процесс в настоящее время выглядит примерно так:

  • Локально клонировать проект (с.девконтейнер уже в проекте)
  • Добавьте workspaceMount выше в devcontainer.json
  • Клонировать проект на удаленном компьютере (например, в /home/marvink/код/новый проект)
  • Откройте проект локально
  • Сборка и повторное открытие в контейнере
  • Работа с файлами на удаленном компьютере

Моя проблема

Это работает, но теперь у меня на локальном диске есть файлы, к которым никогда не прикасаются, что не идеально, но не является катастрофой, большая проблема заключается в том, когда я хочу обновить devcontainer. Мне нужно сделать это локально (в отдельном окне), вручную нужно скопировать и вставить это на пульт, если я хочу зафиксировать это в git, и, конечно, я иногда забываю об этом и пытаюсь отредактировать его удаленно, что вызывает много разочарований (и иногда кажется, что он использует удаленную конфигурацию, но это могло быть ошибкой?).

Вот почему я хочу настроить rsync в обоих направлениях для синхронизации изменений в файлах, и в качестве бонуса я могу редактировать файлы локально, когда я в автономном режиме. В ссылке описано, как это сделать вручную, но я хочу, чтобы это было автоматизировано, чтобы я не мог забыть или ошибиться.

Из Powershell я могу запустить команду rsync, которая синхронизируется в одну сторону, и я могу расширить ее до синхронизации в 2 стороны:

 wsl rsync -rlptzv --progress --exclude=.git '$PWD' 'marvink@s-dev01:~/code/new-project'
 

Это нужно запускать локально, но я не могу найти способ сделать это. Например, мне нужно было бы выполнить задачу локально, но это невозможно при работе на удаленном компьютере (https://github.com/microsoft/vscode-remote-release/issues/168).

Наоборот, мне кажется, что это не вариант, так как я не хочу открывать какие-либо порты на своем ноутбуке, и брандмауэры будут мешать в зависимости от того, где я нахожусь.

My question

My workflow still seems a bit convoluted so I’m open to suggestions on that end but any ideas on how to sync my workspace files?