¿Cómo hacer que sshfs + VPN + git sea un entorno de trabajo tolerable?

9

Actualmente, la base del código para el proyecto en el que estoy trabajando es remotamente en un servidor de la compañía. y tiene que quedarse así. Además, el gitrepositorio remoto no puede hacerse público.

Mi configuración actual es:

  • Conéctese a VPN
  • ejecutar sshfspara montar una copia del código
  • empezar a trabajar en el código
  • cuando termine: sshal servidor remoto y ejecutar gitcomandos allí

El problema con esto es que la VPN se cae de vez en cuando, por lo que mi sshfsmes se rompe y mi IDE se congela. lo que hago es volver a conectar manualmente la VPN, luego sshfsvolver a ejecutarla y volver a trabajar.

Pero se vuelve molesto ya que las VPNcaídas son más frecuentes.

Entonces, me pregunto si hay alguna configuración para sshfsalgún tipo de caché, que me permita trabajar, y solo sincronice los cambios cuando vuelva la VPN.

Eso puede no tener sentido, ya que si el controlador remoto no está disponible, no hay nada en lo que escribir. Entonces, ¿qué pasa con una configuración diferente que usa algún watchtipo de cosa y usa rsyncpara mover los cambios de forma bidireccional (ya sea cuando guardo un archivo o cuando lo hago git pull)

No puedo simplemente clonar git, porque no puedo reproducir todo el entorno para trabajar 'localmente' (DB y otras cosas)

el código tiene que estar en sus servidores, para que yo pueda probar / ver mi trabajo tengo que acceder a una URL, esa es mi caja de arena. No puedo presionar cada vez que quiero ver mis cambios.

Asgaroth
fuente
3
¿Por qué no usas gitla forma sensata? Clone el repositorio y trabaje de forma remota.
zecrazytux
No puedo simplemente clonar git, porque no puedo reproducir todo el entorno para trabajar 'localmente', el código tiene que estar en sus servidores, para que yo pueda probar / ver mi trabajo. Tengo acceso a una URL que es mi sandbox. No puedo presionar cada vez que quiero ver mis cambios
Asgaroth
1
Caramba, eso está bastante roto.
EEAA
¿Cómo es una mala pregunta? No es que pueda cambiar su infraestructura o tomar decisiones sobre ella, solo necesito una forma de trabajar con ellos de forma remota.
Asgaroth

Respuestas:

2

zecrazytux tiene razón : ¿por qué no usa gitla forma en que se supone que debe hacerlo: clonando el repositorio, trabajando en él de forma remota y devolviendo los cambios al maestro?

No veo ninguna razón por la que "no pueda" git pushsu trabajo cada vez que quiera ver sus cambios (idealmente, pasar a una rama de desarrollo que luego se fusiona cuando se prueba y se prueba que funciona): muchas personas hacen esto. Incluso puede usar un post-receivegancho para implementar sus cambios en el entorno si desea automatizar esa parte de las cosas.
(Obviamente no QUIERES hacer esto , pero no has dado ninguna razón por la que rechazo la premisa de tu problema).


Francamente, no hay nada que pueda hacer para que una conexión de red no confiable sea "tolerable" (ESPECIALMENTE si está tratando de montar sistemas de archivos de red): puede trabajar de forma remota como se describe anteriormente, SSH en el sistema y trabajar directamente en él ( screenes su amigo aquí), o investigue y repare la inestabilidad de red subyacente.
Intentar hacer otra cosa para "hacerlo tolerable" es un ejercicio inútil (piense en "paraguas de cóctel en un huracán").

voretaq7
fuente
La razón es que tenemos Redmine y cada commit debe tener un formato específico. entonces un montón de confirmaciones no es aceptable para una sola tarea. También tener que hacer git commit + push, antes de ir al navegador y hacer una actualización (F5), lo haría menos tolerable de lo que es ahora. Imagina tener que cometer + empujar, solo porque me perdí un punto y coma (estoy exagerando, pero entiendes la idea)
Asgaroth
we have redmine and each commit should have a specific format<- Entonces, cuando combina el formato de la rama de desarrollo, confirme la fusión de la forma en que Redmine lo espera. gites flexible así :-)
voretaq7
El punto y coma que falta es simple: no cometas errores (exagero, pero entiendes la idea: puedes ejecutar comprobaciones de sintaxis estáticas contra tus cosas antes de presionar para eliminar pequeñas cosas como esa, y dado que Redmine solo va a vea el compromiso de fusión, nadie necesita saber los horrores que sucedieron en su rama de desarrollo de todos modos); de lo contrario, volveremos a "trabajar de forma remota, usar screenpara cuando la conexión se
corte
eso podría ser cierto, pero todavía me queda tener que comprometerme + presionar para ver los cambios, por supuesto, uso verificadores de sintaxis, no se le ocurrió la idea. pero sabes que cuando trabajas en aplicaciones web, necesitas actualizar mucho la página cuando trabajas en algo, nuevamente commit + puhs lo haría menos tolerable de lo que es ahora.
Asgaroth
Debería poder tener esta configuración: origen → clon remoto → clon local. Se hará un empuje desde el clon local al clon remoto (y no está restringido por ninguna cosa de minas rojas). Cuando se encuentra en un estado que parece apropiado para Redmine, puede empujar el clon remoto al origen.
Alfe
0

Estoy usando estas opciones de sshfs para minimizar la latencia:

sshfs -o Ciphers=arcfour,compression=no,nonempty,auto_cache,reconnect,workaround=all [email protected]:/usr/local/gitdev/ ~/dev/code

Tiene la bandera de reconexión, todas las soluciones alternativas de sshfs, usando auto cache y arcfour chiper.

Puede leer sobre esas opciones en el manual de sshfs, encontré las opciones sshfs más rápidas al menos para mi configuración.

ETA: Más información sobre el rendimiento de sshfs lea aquí: rendimiento de sshfs

perro de diamante
fuente