Come rendere sshfs + VPN + git un ambiente di lavoro tollerabile?


9

Attualmente la base di codice per il progetto a cui sto lavorando è in remoto su un server aziendale. e deve rimanere così. anche il gitrepository remoto non può essere reso pubblico.

La mia configurazione attuale è:

  • Connetti a VPN
  • corri sshfsper montare una copia del codice
  • inizia a lavorare sul codice
  • quando ho finito: sshsul server remoto ed esegui i gitcomandi lì

Il problema è che la VPN cade di tanto in tanto, quindi My sshfsmounth si rompe e il mio IDE si blocca. quello che faccio è riconnettere manualmente la VPN, quindi eseguire di sshfsnuovo e tornare al lavoro.

Ma diventa fastidioso come le VPNcadute più spesso.

Quindi mi chiedo se ci sono delle impostazioni per sshfsuna sorta di cache, che mi consentirebbe di lavorare e sincronizzare le modifiche solo quando la VPN torna.

Questo potrebbe non avere senso, poiché se il driver remoto non è disponibile non c'è nulla su cui scrivere. Che dire di una diversa configurazione che utilizza un qualche watchtipo di cosa e usa rsyncper spostare le modifiche in modo bidirezionale (o quando salvo un file o quando lo faccio git pull)

Non riesco solo a git clonare, perché non riesco a riprodurre l'intero ambiente per lavorare 'localmente' (DB e cose)

il codice deve trovarsi nei loro server, per poter testare / vedere il mio lavoro devo accedere a un URL, che è la mia sandbox. Non riesco a spingere ogni volta che voglio vedere le mie modifiche.


3
Perché non usi in gitmodo sano? Clonare il repository e lavorare in remoto.
zecrazytux,

Non posso semplicemente usare clone, perché non riesco a riprodurre l'intero ambiente in modo che funzioni "localmente" il codice deve trovarsi nei loro server, affinché io possa testare / vedere il mio lavoro. Ho accesso a un URL che è il mio sandbox. Non riesco a spingere ogni volta che voglio vedere i miei cambiamenti
Asgaroth il

1
Cripes, è abbastanza rotto.
EEAA,

Come è una cattiva domanda? non è che posso cambiare la loro infrastruttura o prendere decisioni al riguardo, ho solo bisogno di un modo per lavorare con loro da remoto.
Asgaroth,

Risposte:


2

zecrazytux ha ragione : perché non usi gitil modo in cui dovresti: clonando il repository, lavorando su di esso in remoto e rinviando le modifiche al master?

Non vedo alcun motivo per cui "non puoi" il git pushtuo lavoro ogni volta che vuoi vedere i tuoi cambiamenti (idealmente spingendo verso un ramo di sviluppo che poi viene unito quando viene testato e dimostrato di funzionare) - molte persone lo fanno. È anche possibile utilizzare un post-receivehook per distribuire le modifiche nell'ambiente se si desidera automatizzare quella parte delle cose.
(Ovviamente non VUOI farlo , ma non hai dato alcun motivo per cui quindi rifiuto la premessa del tuo problema.)


Francamente non c'è niente che tu possa fare per rendere "tollerabile" una connessione di rete inaffidabile (soprattutto se stai provando a montare i filesystem di rete) - puoi lavorare in remoto come indicato sopra, SSH nel sistema e lavorare direttamente su di esso ( screenè il tuo amico qui) o indagare e correggere l'instabilità di rete sottostante.
Cercare di fare qualcos'altro per "renderlo tollerabile" è un esercizio di inutilità (pensa "l'ombrello da cocktail in un uragano").


Il motivo è che abbiamo redmine e ogni commit dovrebbe avere un formato specifico. quindi un mucchio di commit non è accettabile per un singolo compito. Anche dover fare git commit + push, prima di accedere al browser e fare un aggiornamento (F5), lo renderebbe meno tollerabile di quanto non sia ora. Immagina di dover impegnare + push, solo perché mi mancava un punto e virgola (sto esagerando, ma ti viene l'idea)
Asgaroth,

we have redmine and each commit should have a specific format<- Pertanto, quando si unisce il formato del ramo di sviluppo, il commit per l'unione come previsto da Redmine. gitè flessibile così :-)
voretaq7,

La cosa che manca al punto e virgola è semplice: non commettere errori (sto esagerando, ma ottieni l'idea: puoi eseguire controlli di sintassi statici contro le tue cose prima di spingere per eliminare piccole cose del genere, e dal momento che Redmine sta solo per vedere l'impegno di fusione verso il basso che nessuno ha bisogno di conoscere gli orrori che si sono verificati nel tuo ramo di sviluppo) - altrimenti torneremo a "lavorare in remoto, utilizzare screenper quando la connessione si
interrompe

questo potrebbe essere vero, ma mi rimane ancora il dovere di impegnarmi + push per vedere le modifiche, ovviamente uso i controlli di sintassi, non hai avuto l'idea. ma sai che quando lavori nelle app web, devi fare un sacco di aggiornamento della pagina quando lavori su qualcosa, ancora una volta commit + puh lo renderebbero meno tollerabile di quanto non sia ora.
Asgaroth,

Dovresti essere in grado di avere questa configurazione: origine → clone remoto → clone locale. Verrà eseguito un push dal clone locale al clone remoto (e non è limitato da alcun materiale Redmine). Quando ti trovi in ​​uno stato che sembra appropriato per Redmine, puoi spingere il clone remoto verso l'origine.
Alfe,

0

Sto usando queste opzioni sshfs per ridurre al minimo la latenza:

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

Ha il flag di riconnessione, tutte le soluzioni alternative a sshfs, usando la cache automatica e il chip arcfour.

Puoi leggere queste opzioni sul manuale di sshfs, ho trovato quelle le opzioni sshfs più veloci almeno per la mia configurazione.

ETA: Altre informazioni sulle prestazioni di sshfs leggi qui: prestazioni di sshfs

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.