Usando a área de trabalho compartilhada do git em múltiplos hosts

0

Estou fazendo a transição de meus projetos pessoais de usar o subversion (svn) para o GIT. Na subversão, usei um diretório de trabalho compartilhado do SVN em vários hosts (apesar de as pessoas me dizerem que não funcionaria), e está provado que funciona muito bem para mim. É importante ressaltar que esta é uma solução de usuário única, e eu sou a única pessoa que está fazendo alterações, portanto, não estou executando commits do SVN em várias caixas ao mesmo tempo. Resumindo, estou disposto a viver com algumas limitações (se necessário) para simplificar o gerenciamento geral de meus projetos pessoais.

Para entender por que estou procurando fazer isso, considere minha configuração (abaixo). Eu tenho algumas máquinas robustas, cada uma executando várias VMs. Eu tenho vários discos grandes em "host1" e tenho compartilhamentos de arquivos que outros hosts (na LAN local) acessam.

host1 (share \host1\share)
  +vm1 (access SVN working dir \host1\share\svnproj1, and svnproj2)
  +vm2 (access SVN working dir \host1\share\svnproj1)
  +vm3 (access SVN working dir \host1\share\svnproj1)

host2
  +vm4 (access SVN working dir \host1\share\svnproj1)
  +vm5 (access SVN working dir \host1\share\svnproj1)

laptop (access SVN working dir \host1\share\svnproj1)
     But also have a svn checkout at c:\svnproj1

Todos os sistemas operacionais são Win7x64 ou Win8.1x64. Atualmente estou usando o Tortoise SVN 1.8.2 e o subversion 1.8.3 (em TODOS os hosts).

Essa abordagem permite que eu acesse o compartilhamento de arquivos do servidor (\ host1 \ share) de qualquer host. Em alguns casos, meu svn repos tem muitos anos e mais de 2 GIG com "áreas de trabalho SVN" separadas em cada VM torna minhas VMs maiores e complicam meus instantâneos de VM e backups.

Eu também não tenho que confirmar arquivos até que eu esteja levando meu laptop para uma reunião de negócios. Eu trabalho em casa, então isso não é freqüente. Quando retorno de uma reunião de negócios ou viagem, eu faço as alterações no meu laptop e atualizo o comando svn update em qualquer uma das 5 VMs e os arquivos são atualizados para todas as 5 VMs. Para mim, isso é bastante simples e funcionou bem.

Então, agora estou me perguntando se essa mesma abordagem pode funcionar usando o GIT. Tudo que li diz que você não pode (ou não deveria fazer isso).

Aqui estão as perguntas que tenho que me ajudarão a entender se isso é tecnicamente possível (NOTA: eu já estou experimentando essa abordagem).

  1. (Q) O GIT armazena informações em um host fora do repositório GIT? (.git dir) e requer essa informação para gerenciar adequadamente o repositório do git. Se isso acontecer, então ter várias máquinas configuradas identicamente com essa informação não é viável.

  2. (Q) O GIT cria arquivos temporários dentro da área de trabalho do GIT? E se isso, seria que as informações temporárias estragassem outra cópia do git correndo em outra máquina? Se assim for, então, novamente, esta abordagem não é viável.

  3. (Q) O GIT tem o mesmo problema que a Subersão em que todos os clientes usando um repositório específico precisam ser da mesma versão?

  4. (Q) Esta abordagem falha se outro SO for introduzido (Linux, Apple OSX)?

  5. (Q) Se você usar um provedor de armazenamento em nuvem como o Dropbox ou o SpiderOak esta solução ainda funciona?

  6. (Q) Existem outras questões ou problemas que eu possa encontrar quando usando o GIT que eu não veria ao usar o SVN.

Mais uma vez, é importante observar que essa solução só precisa funcionar para mim, nunca haverá várias pessoas fazendo alterações no repositório GIT, e posso viver com algumas limitações se simplificar o gerenciamento geral das VMs .

Este artigo link fez um bom trabalho explicando como usar o GIT da maneira tradicional. Para mim, a solução do Dropbox é equivalente ao compartilhamento de arquivos da LAN local.

    
por PatS 09.06.2014 / 02:25

1 resposta

1

Deve funcionar sem problemas. Basta colocar o seu repositório git onde seu diretório de trabalho atual do svn está no host1. Eu fiz algo parecido, onde compartilho um repositório git entre dois computadores usando o Dropbox (o que na verdade é menos aconselhável do que você está falando, porque o Dropbox criará uma versão separada do repositório se não puder sincronizar).

Aqui estão as respostas para as perguntas que você fez.

  1. Há algumas informações armazenadas em uma pasta .gitconfig em seu diretório inicial, mas tudo isso é substituído por qualquer informação de configuração na pasta .git , que é totalmente portátil. Não deve causar problemas. Uma coisa - tenha cuidado ao escolher a mesma opção para fins de linha em todos os sistemas ou configure-a na pasta .git .
  2. Não (pelo menos, não que eu esteja ciente). Todas as revisões são armazenadas na pasta .git e a cópia de trabalho é apenas arquivos regulares.
  3. Seria melhor se todos executassem a mesma versão do git para que você não obtivesse bugs estranhos, mas não poderia causar problemas se fossem versões diferentes e você só executasse tarefas básicas .
  4. O SO não fará diferença, pois a pasta .git seria a mesma. Basta escolher a opção apropriada para finais de linha e escolher a mesma opção em todos os sistemas.
  5. Sim, fiz isso no Dropbox. O único problema é se o Dropbox não conseguir sincronizar e criar uma cópia conflitante do seu repositório. Então você tem uma dor de cabeça para descobrir qual deles tem seus mais recentes commits. Isso não funciona para vários usuários acessando ao mesmo tempo, pois cada usuário precisa de sua própria cópia de trabalho.
  6. Sem bobagens. Eu fiz a mudança em meus projetos pessoais há um tempo atrás e foi bem tranquilo. Existem ferramentas que ajudarão você a importar seu histórico svn para o git se você quiser.
por 09.06.2014 / 03:54