Como tornar o sshfs + VPN + git um ambiente de trabalho tolerável?

9

Atualmente, a base de código do projeto em que estou trabalhando está remotamente em um servidor da empresa. e tem que ficar assim. também o gitrepositório remoto não pode ser tornado público.

Minha configuração atual é:

  • Conecte-se ao VPN
  • executar sshfspara montar uma cópia do código
  • começar a trabalhar no código
  • quando terminar: sshpara o servidor remoto e execute gitcomandos lá

O problema com isso é que a VPN cai de tempos em tempos, então minha sshfsboca quebra e meu IDE congela. o que faço é reconectar manualmente a VPN, executar sshfsnovamente e voltar ao trabalho.

Mas fica irritante com a VPNqueda mais frequente.

Então, eu me pergunto se há alguma configuração para sshfsalgum tipo de cache, que me permita trabalhar e só sincronize as alterações quando a VPN voltar.

Isso pode não fazer sentido, pois se o driver remoto não estiver disponível, não há nada para escrever. Então, que tal uma configuração diferente que use algum watchtipo de coisa e rsyncmova as alterações de maneira bidirecional (quando eu salvo um arquivo ou quando o faço git pull)

Não posso simplesmente clonar o git, porque não consigo reproduzir todo o ambiente para trabalhar 'localmente' (banco de dados e outras coisas)

o código deve estar em seus servidores, para que eu possa testar / ver meu trabalho, tenho que acessar uma URL, que é minha caixa de areia. Não consigo pressionar cada vez que quero ver minhas alterações.

Asgaroth
fonte
3
Por que você não usa gito caminho são? Clone o repositório e trabalhe remotamente.
Zecrazytux 17/01
Não posso simplesmente clonar o git, porque não consigo reproduzir todo o ambiente para funcionar 'localmente', o código deve estar em seus servidores, para que eu teste / veja meu trabalho. Eu tenho acesso a um URL que é minha sandbox. Eu não posso git empurrar cada vez que eu quero ver as minhas alterações
Asgaroth
1
Caramba, isso é muito quebrado.
EEAA
Como é uma pergunta ruim? não é como se eu pudesse alterar a infraestrutura ou tomar decisões sobre ela, só preciso de uma maneira de trabalhar com eles remotamente.
Asgaroth

Respostas:

2

O zecrazytux está certo - Por que você não usa gitda maneira que deveria: clonando o repositório, trabalhando remotamente e enviando as alterações de volta ao mestre?

Não vejo razão para que você "não possa" fazer git pushseu trabalho toda vez que quiser ver suas alterações (de preferência para um ramo de desenvolvimento que depois será mesclado quando testado e comprovado) - muitas pessoas fazem isso. Você pode até usar um post-receivegancho para implantar suas alterações no ambiente se quiser automatizar essa parte das coisas.
(Você obviamente não quer fazer isso , mas não deu nenhuma razão para que eu rejeite a premissa do seu problema.)


Francamente, não há nada que você possa fazer para tornar uma conexão de rede não confiável "tolerável" (ESPECIALMENTE se você estiver tentando montar sistemas de arquivos de rede) - você pode trabalhar remotamente conforme descrito acima, fazer o SSH no sistema e trabalhar diretamente nele ( screené o seu amigo aqui) ou investigue e corrija a instabilidade da rede subjacente.
Tentar fazer outra coisa para "torná-lo tolerável" é um exercício de futilidade (pense em "guarda-chuva de coquetel em um furacão").

voretaq7
fonte
O motivo é que temos redmine e cada commit deve ter um formato específico. portanto, um monte de confirmações não é aceitável para uma única tarefa. Também ter que executar git commit + push, antes de ir para o navegador e fazer uma atualização (F5), tornaria menos tolerável do que é agora. Imagine ter que cometer + impulso, só porque eu perdi um ponto e vírgula (estou exagerando, mas você começa a idéia)
Asgaroth
we have redmine and each commit should have a specific format<- Então, quando você mescla o formato da ramificação de desenvolvimento, o commit da mescla da maneira que o redmine espera. gité flexível assim :-)
voretaq7
A coisa que falta é ponto-e-vírgula é simples: não cometa erros (estou exagerando, mas você entendeu a idéia - você pode executar verificações estáticas de sintaxe nas suas coisas antes de pressionar para eliminar pequenas coisas assim, e como o Redmine só vai ver o merge-down comprometer ninguém precisa saber os horrores que aconteceram em seu ramo dev de qualquer maneira) - caso contrário, estamos de volta ao "trabalho remotamente, uso screenpara quando as matrizes de conexão"
voretaq7
isso pode ser verdade, mas ainda tenho que confirmar + push para ver as alterações, é claro que eu uso verificadores de sintaxe, você não entendeu. mas você sabe que, ao trabalhar em aplicativos da Web, é necessário fazer muitas atualizações de página ao trabalhar em algo. Confirmar + puhs tornaria menos tolerável do que é agora.
Asgaroth
Você deve poder ter esta configuração: origem → clone remoto → clone local. Um envio do clone local será feito para o clone remoto (e não é restringido por nenhum material redmine). Quando você está em um estado que parece adequado para o redmine, é possível enviar o clone remoto para a origem.
Alfe 26/09
0

Estou usando essas opções sshfs para minimizar a latência:

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

Possui o sinalizador de reconexão, todas as soluções alternativas do sshfs, usando cache automático e chiper arcfour.

Você pode ler sobre essas opções no manual do sshfs, encontrei as opções mais rápidas do sshfs pelo menos para minha configuração.

ETA: Mais sobre o desempenho do sshfs leia aqui: desempenho do sshfs

diamonddog
fonte