Editando Arquivos Remotos no repositório Git

3

Eu tenho uma máquina Linux remota que uso como servidor de desenvolvimento para um aplicativo da web. Não consigo reproduzir o ambiente localmente, os arquivos devem ser executados no servidor remoto, mas quero editá-los localmente (no vim).

Os arquivos neste servidor remoto são gerenciados via Git. Eu normalmente só edito entre 1 a 5 arquivos por vez de várias centenas.

Soluções sugeridas e por que elas não funcionam bem:

sshfs : esta solução parece incrível, mas existem alguns erros.

  • O editor local ficará bloqueado enquanto economiza por alguns segundos - não há economia de assincronismo em caso de atrasos na rede.
  • Se a rede ficar inativa enquanto o sshfs estiver ativo, ela irá realmente bloquear essa parte do sistema de arquivos até que você faça algumas coisas hackyas para desmontá-la: link
  • Em geral, é bastante lento, pois sincroniza dados constantemente, em vez de criar uma cópia local desse arquivo durante a edição

gvfs :

  • A operação é lenta - leva muito tempo para abrir arquivos e a árvore de diretórios não é armazenada em cache. Além disso, há um bug (com mais de 5 anos de idade) que faz com que o vim atropele as permissões de arquivos, o que significa que eu preciso atualizar as permissões através de um ssh remoto constantemente

rsync :

  • Como esse é um repositório do git, talvez precise alterar as ramificações com frequência. Há momentos em que o servidor remoto pode precisar me atualizar e vice-versa. No geral, isso adiciona muita complexidade e exigiria a sincronização manual sempre que eu quiser verificar uma alteração no servidor remoto.

Use o vim na máquina remota via terminal :

  • Há um atraso na digitação - isso me deixa louco.

gftp

  • O arquivo temporário criado por ele tem um nome arbitrário - portanto, não é possível dizer qual guia é o que
  • Requer um fechamento do vim para atualizar o servidor remoto (inane)

Certamente deve haver uma maneira melhor? No Windows, eu usei o winSCP, que basicamente faz uma cópia temporária do arquivo localmente que você edita, e quando você o salva, ele sincroniza o arquivo em segundo plano (para que você possa continuar no editor instantaneamente após salvar).

Eu encontrei essa pergunta sobre o emacs, mas eu não quero usar o emacs :( como fazer para ssh servidor remoto e usar emacs locais para editar arquivos?

    
por sricks 09.01.2015 / 18:27

2 respostas

3

Uma opção que está faltando na sua lista é o plugin netrw do Vim (mencionado pela primeira vez por @godlygeek nos comentários), que acompanha o Vim. Você pode :edit scp://hostname/path/to/file , ou até especificar tal URL no lançamento: $ vim ftp://hostname/path/to/file . Suporta múltiplos protocolos, e manipula o download / upload de forma transparente (em cada :write ), enquanto mantém o nome do arquivo original, então a detecção de tipo de arquivo etc. ainda funciona.

    
por 09.01.2015 / 21:32
0

Esta pode não ser uma solução aceitável para um sistema de produção, mas você pode executar um serviço de sincronização como o BitTorrentSync (ou qualquer outro) em conjunto com o git. Eu faço isso entre meu laptop e desktop e funciona muito bem.

Eu posso modificar um arquivo em um repositório local em casa (e não confirmar ou enviar). Quando eu começo a trabalhar, a mesma modificação está disponível. Eu posso apenas terminar e comprometer / empurrar a partir daí.

Eu tenho uma pasta ~ / Git que é a minha principal pasta BitTorrentSync. Nessa pasta eu tenho vários subdiretórios para cada repositório. Apenas certifique-se de adicionar a pasta BitTorrentSync '.Sync' em '.gitignore'.

    
por 11.01.2015 / 00:42

Tags