Как сделать sshfs + VPN + git приемлемой рабочей средой?

9

В настоящее время кодовая база для проекта, над которым я работаю, находится на удаленном сервере компании. и так должно оставаться. также удаленный gitрепозиторий не может быть обнародован.

Моя текущая настройка:

  • Подключиться к VPN
  • запустить, sshfsчтобы смонтировать копию кода
  • начать работать над кодом
  • когда я закончу: sshна удаленный сервер и запускаю gitтам команды

Проблема с этим заключается в том, что время от времени VPN падает, поэтому мой sshfsmounth ломается, и моя IDE зависает. я вручную подключаю VPN, затем sshfsснова запускаю и возвращаюсь к работе.

Но это становится раздражающим, поскольку VPNпадения чаще.

Поэтому мне интересно, есть ли какие-то настройки для sshfsкакого-то кеша, которые позволили бы мне работать и синхронизировать изменения только при возврате VPN.

Это может не иметь смысла, поскольку, если удаленный драйвер недоступен, нечего писать. Так что насчет другой установки, которая использует какую- watchто вещь и использует rsyncдля перемещения изменений в двух направлениях (или когда я сохраняю файл, или когда я делаю git pull)

Я не могу просто сделать git clone, потому что я не могу воспроизвести всю среду, чтобы работать «локально» (БД и прочее)

код должен быть на их серверах, чтобы я мог проверить / увидеть свою работу, я должен получить доступ к URL, то есть к моей песочнице. Я не могу толкать меня каждый раз, когда хочу увидеть свои изменения.

Asgaroth
источник
3
Почему бы тебе не использовать gitвменяемый способ? Клонируйте репо и работайте удаленно.
zecrazytux
Я не могу просто сделать git clone, потому что я не могу воспроизвести всю среду, чтобы работать «локально», код должен находиться на их серверах, чтобы я мог проверить / увидеть свою работу. У меня есть доступ к URL, который является моей песочницей. Я не могу толкать меня каждый раз, когда хочу увидеть свои изменения
Асгарот
1
Крипс, это довольно сломано.
EEAA
Как это плохой вопрос? Я не могу изменить их инфраструктуру или принять решение по ней, мне просто нужен способ работать с ними удаленно.
Асгарот

Ответы:

2

Zecrazytux прав - почему вы не используете gitспособ, которым вы должны: клонировать репозиторий, работать над ним удаленно и передавать изменения обратно мастеру?

Я не вижу причин, по которым вы «не можете» выполнять git pushсвою работу каждый раз, когда хотите увидеть свои изменения (в идеале - переходить в ветку разработки, которая затем объединяется, когда она тестируется и доказывает свою работоспособность) - многие люди делают это. Вы даже можете использовать post-receiveловушку для развертывания ваших изменений в среде, если вы хотите автоматизировать эту часть вещей.
(Вы, очевидно , не ХОТИТЕ сделать это , но вы не назвали никакой причины, поэтому я отвергаю предпосылку вашей проблемы.)


Честно говоря, вы ничего не можете сделать, чтобы ненадежное сетевое соединение было «допустимым» (ОСОБЕННО, если вы пытаетесь смонтировать сетевые файловые системы) - вы можете работать удаленно, как описано выше, подключиться к системе по SSH и работать непосредственно с ней ( screenэто ваше друг здесь), или исследуйте и исправьте основную нестабильность сети.
Попытка сделать что-то еще, чтобы «сделать это терпимым» - бесполезное упражнение (подумайте «коктейльный зонт в урагане»).

voretaq7
источник
Причина в том, что у нас есть redmine, и каждый коммит должен иметь определенный формат. поэтому куча коммитов не подходит для одной задачи. Кроме того, выполнение git commit + push перед переходом в браузер и обновлением (F5) сделает его менее терпимым, чем сейчас. Представьте, что вам нужно совершить + толчок только потому, что я пропустил точку с запятой (я преувеличиваю, но вы
поняли
we have redmine and each commit should have a specific format<- Таким образом, когда вы объединяете формат ветки разработки, коммит для слияния так, как его ожидает redmine. gitтак гибок :-)
voretaq7
Упущенная точка с запятой проста: не совершайте ошибок (я преувеличиваю, но вы поняли - вы можете запускать статические проверки синтаксиса для своих вещей, прежде чем пытаться устранить такие мелочи, а Redmine только собирается посмотрите коммит слияния, в любом случае никому не нужно знать об ужасах, которые произошли в вашей ветке разработчика) - в противном случае мы вернемся к «удаленной работе, используйте, screenкогда соединение умирает»
voretaq7
это может быть правдой, но мне все еще остается необходимость совершать + push, чтобы увидеть изменения, конечно же, я использую средства проверки синтаксиса, вы не поняли идею. но вы знаете, что при работе в веб-приложениях вам нужно много обновлять страницы, когда работаете над чем-то, и снова commit + puhs сделает его менее терпимым, чем сейчас.
Асгарот
Вы должны иметь возможность иметь эту настройку: источник → удаленный клон → локальный клон. Выдвижение из локального клона будет выполнено для удаленного клона (и не ограничено никакими элементами Redmine). Когда вы находитесь в состоянии, которое кажется подходящим для Redmine, вы можете выдвинуть удаленный клон в исходное положение.
Alfe
0

Я использую параметры sshfs, чтобы минимизировать задержку:

sshfs -o Ciphers=arcfour,compression=no,nonempty,auto_cache,reconnect,workaround=all user@development.net:/usr/local/gitdev/ ~/dev/code

Он имеет флаг переподключения, все обходные пути sshfs, используя авто кеш и arcfour chiper.

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

ETA: Подробнее о производительности sshfs читайте здесь: производительность sshfs

diamonddog
источник