Sincroniza arquivos locais com o repositório git remoto

3

Eu tenho meu repositório git em um linux localizado no servidor da empresa. Eu ssh na minha máquina linux e edito arquivos lá.

Problema

Este método é ótimo até que eu tenha uma boa conexão com o servidor. em caso de conexão lenta ou mesmo não tendo uma conexão não consigo acessar meu trabalho e não consigo fazer o trabalho.

Solução Potencial

Talvez eu possa copiar meus arquivos do servidor linux para o disco da minha máquina local e, em seguida, executar um script que escute as alterações feitas em meus arquivos locais e espelhe-as no meu servidor remoto.

  • Estou usando o Git, qualquer solução deve abranger arquivos git também.
  • Caso eu esteja perdendo minha conexão, poderei continuar meu trabalho em arquivos locais e assim que o script estabelecido pela conexão espelhar minhas alterações no servidor remoto.
  • Minha máquina executa o Mac OSX Lion.
por Mohsen 11.06.2012 / 05:31

2 respostas

5

Não tenho muita certeza do modo como a pergunta foi feita, mas parece-me que você pode estar tendo problemas para migrar de um sistema de controle de versão não distribuído (svn, csv etc.) para um sistema distribuído como git.

Como se vê, você obtém a funcionalidade que deseja gratuitamente no Git! Simplesmente clone seu git repo no computador que você quer trabalhar ( git clone <remote-repo> ), trabalhe normalmente (código, git add, git commit, enxague e repita), e então empurre de volta para o repositório remoto quando terminar e tenha uma conexão de internet ativa ( git push origin master ou qualquer que seja o nome do seu remote / branch se você não tiver os padrões). O Git faz o download de uma cópia completa do repositório, incluindo todo o histórico, por padrão; então não ter uma conexão com a internet não deveria importar. Você pode continuar trabalhando e se sincronizando com sua máquina remota quando a internet voltar.

Se você está procurando uma maneira de empurrar automaticamente toda vez que um commit é feito, confira git hooks . O post commit hook é provavelmente o que você quer. Basta navegar até o diretório .git/hooks dentro do seu git repo e renomear o arquivo post-commit.sample para post-commit , ou criá-lo e certificar-se de que ele é executável ( chmod +x post-commit ) se ele não existir. Agora qualquer coisa que você colocar nesse script será executada logo após você fazer um commit, por exemplo, você parece querer:

#!/bin/sh
git push origin master

Você também pode usar o gancho post-receive na máquina remota para fazer algo toda vez que receber um envio do repositório local.

EDIT: Em um comentário você afirmou que "empurrar manualmente não funcionará"; No entanto, o git suporta o push via SSH, que é provavelmente como você está gerenciando seu servidor de qualquer maneira. Caso contrário, também pode enviar por FTP ( shudder ) e outros protocolos, incluindo HTTP [S], se você configurar o servidor corretamente. Você provavelmente deve procurar usar o git desta forma, pois é assim que foi projetado para ser usado.

    
por 15.06.2012 / 02:43
1

O jeito certo de fazer isso é puxando / empurrando do servidor. A questão é, como você pode automatizar isso? Bem, com um pouco de trabalho, você poderia juntar algo que fosse automaticamente empurrado para uma ramificação separada no servidor toda vez que um arquivo fosse alterado?

    
por 11.06.2012 / 10:33

Tags