git
version-control
cloud
dropbox
n1kh1lp
fonte
fonte
Respostas:
Eu acho que o Git no Dropbox é ótimo. Eu uso o tempo todo. Tenho vários computadores (dois em casa e um no trabalho) que utilizo o Dropbox como um repositório central. Como não quero hospedá-lo em um serviço público e não tenho acesso a um servidor ao qual sempre posso ssh, o Dropbox cuida disso sincronizando (muito rapidamente) em segundo plano.
A instalação é algo como isto:
A partir daí, basta clonar
~/Dropbox/git/project.git
que você associou à sua conta do Dropbox (ou compartilhou este diretório com as pessoas), você pode executar todas as operações normais do Git e elas serão sincronizadas automaticamente com todas as suas outras máquinas.Eu escrevi uma postagem no blog, No controle de versão , ( link antigo desativado ) sobre o meu raciocínio e como eu configuro meu ambiente, é baseado na minha experiência em desenvolvimento Ruby on Rails , mas pode ser aplicado a qualquer coisa, na verdade.
fonte
A maneira correta de fazer isso é usar o git-remote-dropbox: https://github.com/anishathalye/git-remote-dropbox
Criar seu próprio repositório simples no Dropbox causa muitos problemas. Anish (o criador da biblioteca) explica melhor :
fonte
Essa resposta é baseada na experiência da Mercurial , não no Git, mas essa experiência diz que usar o Dropbox dessa maneira está solicitando repositórios corrompidos, se houver uma chance de você estar atualizando o mesmo repositório baseado no Dropbox de máquinas diferentes em vários momentos (Mac, Unix, Windows no meu caso).
Não tenho uma lista completa das coisas que podem dar errado, mas aqui está um exemplo específico que me mordeu. Cada máquina possui sua própria noção de caracteres de final de linha e como os caracteres maiúsculos / minúsculos são tratados nos nomes dos arquivos. Dropbox e Git / Mercurial lidam com isso de maneira um pouco diferente (não me lembro das diferenças exatas). Se o Dropbox atualizar o repositório por trás do repositório quebrado, presto e quebrado do Git / Mercurial. Isso acontece de maneira imediata e invisível, então você nem sabe que seu repositório está quebrado até tentar recuperar algo dele.
Depois de desenterrar uma bagunça fazendo as coisas dessa maneira, tenho usado a seguinte receita com grande sucesso e sem sinais de problemas. Simplesmente mova seu repositório para fora do Dropbox. Use o Dropbox para todo o resto; documentação, arquivos JAR , qualquer coisa que você queira. E use o GitHub (Git) ou o Bitbucket (Mercurial) para gerenciar o próprio repositório. Ambos são gratuitos, portanto, isso não agrega nada aos custos, e cada ferramenta agora se destaca dos seus pontos fortes.
A execução do Git / Mercurial em cima do Dropbox não adiciona nada, exceto riscos. Não faça isso.
fonte
Com relação às equipes pequenas que usam o Dropbox:
Se cada desenvolvedor tiver seu próprio repositório gravável no Dropbox, que é puxado apenas para outros desenvolvedores, isso facilita o compartilhamento de código sem risco de corrupção!
Então, se você quiser uma 'linha principal' centralizada, poderá solicitar que um desenvolvedor gerencie todos os recursos a partir de seu próprio repositório.
fonte
Eu não queria colocar todos os meus projetos em um repositório Git, nem queria executar esse código para cada projeto, então criei um script Bash que automatizará o processo. Você pode usá-lo em um ou vários diretórios - para que ele possa executar o código nesta postagem para você ou em vários projetos ao mesmo tempo.
fonte
Eu não acho que usar o Git e o Dropbox seja o caminho a seguir ... Pense nos recursos de ambos:
Git:
Dropbox:
E se você está preocupado em compartilhar alguns dos seus arquivos, por que não codificá-los? E você pode obter a maior vantagem do Dropbox para o Git, ou seja, ter arquivos públicos e privados ...
fonte
Agora é 2015 e, há três dias, uma nova ferramenta baseada na API do Dropbox v2 foi criada para usar com segurança o git no Dropbox. Funciona contra a API em vez de usar o cliente da área de trabalho e manipula corretamente vários pushs simultâneos para um repositório hospedado em uma pasta compartilhada.
Uma vez configurado, permite configurar um git remote exatamente como qualquer outro git remote.
fonte
Eu uso o Mercurial (ou Git) + TrueCrypt + Dropbox para backups remotos criptografados .
O mais interessante é que o Dropbox NÃO sincroniza todo o contêiner TrueCrypt se você modificar uma pequena parte do seu código. O tempo de sincronização é aproximadamente proporcional à quantidade de alterações. Mesmo criptografada, a combinação de TrueCrypt + Dropbox faz excelente uso da cifra de bloco + da sincronização no nível do bloco.
Em segundo lugar, um contêiner criptografado monolítico não apenas adiciona segurança, mas também reduz as chances de corrupção do repositório .
Cuidado: No entanto, você deve ter muito cuidado para não ter o contêiner montado enquanto o Dropbox estiver em execução. Também pode ser difícil resolver conflitos se dois clientes diferentes fizerem check-in de versões diferentes para o contêiner. Portanto, é prático apenas para uma única pessoa usá-lo para backups, não para uma equipe.
Configuração:
preserve modification timestamp
*.Uso:
PS Desmarque a
preserve modification timestamp
caixa de seleção informa que o arquivo foi modificado e deve ser sincronizado. Observe que a montagem do contêiner modifica o carimbo de data e hora, mesmo se você não alterar nenhum arquivo nele. Se você não quer que isso aconteça, basta montar o volume comoread-only
fonte
Adoro a resposta de Dan McNevin! Também estou usando o Git e o Dropbox juntos agora, e estou usando vários aliases no meu .bash_profile para que meu fluxo de trabalho fique assim:
Estes são meus apelidos:
fonte
Usamos esse método (criando um repositório vazio no Dropbox) em uma pasta de compartilhamento .
Um pequeno grupo de desenvolvedores pode extrair desse repositório sincronizado e criar um clone local. Depois que a unidade de trabalho estiver concluída, voltamos à origem.
Uma coisa que me falta é uma boa maneira de enviar um email com as informações do conjunto de alterações assim que ocorre um envio para a origem. Estamos usando o Google Wave para acompanhar manualmente as alterações.
fonte
Eu tenho usado o Mercurial da maneira recomendada e solicitamos que você seja cauteloso, especialmente se alguma das máquinas diferir. Os fóruns do Dropbox estão cheios de queixas de problemas misteriosos de nomes de arquivos que aparecem espontaneamente. O Hg (e presumo que o Git) não notará ou reclamará durante os check-ins de rotina e você ouvirá apenas sobre a corrupção quando se queixar de um repositório corrompido ao tentar usá-lo de verdade. Más notícias. Gostaria de poder ser mais específico sobre o problema e suas soluções alternativas; Eu ainda estou tentando me livrar dessa bagunça.
fonte
Há também um projeto de código aberto (uma coleção de scripts de plataforma cruzada [Linux, Mac, Win]) que faz todos os detalhes minuciosos do gerenciamento de repositório com alguns comandos (3-4).
https://github.com/karalabe/gitbox/wiki
O uso da amostra é:
Após o qual o uso normal do git:
Verifique o wiki do projeto e os manuais para obter referências completas de comandos e tutoriais.
fonte
Eu guardo meus repositórios que não são do Github no Dropbox. Uma ressalva que encontrei foi a sincronização após uma reinstalação. O Dropbox baixa primeiro os arquivos menores antes de passar para os maiores. Não é um problema se você começar à noite e voltar depois do fim de semana :-)
Meu tópico - http://forums.dropbox.com/topic.php?id=29984&replies=6
fonte
Agora, em 2014, uso o Git e o Dropbox há cerca de um ano e meio sem problemas. Alguns pontos, porém:
git push
envia para um repositório remoto, para que, se algum dia for corrompido, eu possa recuperá-lo facilmente.C:\Users
commklink /D link target
porque algumas bibliotecas foram apontados para locais absolutos.fonte
Gosto da resposta mais votada por Dan McNevin. Acabei fazendo a sequência de comandos git muitas vezes e decidi fazer um script. Então aqui está:
O script requer apenas um nome de projeto. Ele irá gerar um repositório git
~/Dropbox/git/
sob o nome especificado e enviará todo o conteúdo do diretório atual para a ramificação principal de origem recém-criada. Se mais de um nome de projeto for fornecido, o argumento do nome do projeto mais à direita será usado.Opcionalmente, o argumento do comando -r especifica a ramificação remota que enviará ao mestre de origem. A localização do mestre de origem do projeto também pode ser especificada com o argumento -m. Um arquivo .gitignore padrão também é colocado no diretório de filial remota. Os padrões de diretório e arquivo .gitignore são especificados no script.
fonte
Outra abordagem:
Todas as respostas até agora, incluindo a resposta @Dan, que é a mais popular, abordam a ideia de usar o Dropbox para centralizar um repositório compartilhado, em vez de usar um serviço focado em git como github, bitbucket, etc.
Mas, como a pergunta original não especifica o que realmente significa usar "Git e Dropbox juntos" efetivamente, vamos trabalhar em outra abordagem: "Usando o Dropbox para sincronizar apenas a árvore de trabalho".
O tutorial tem estas etapas:
dentro do diretório do projeto, cria-se um
.git
diretório vazio (por exemplomkdir -p myproject/.git
)desincronize o
.git
diretório no Dropbox. Se estiver usando o aplicativo Dropbox: vá para Preferências, Sincronização e "escolha pastas para sincronizar", onde o.git
diretório precisa ser desmarcado. Isso removerá o.git
diretórioexecutado
git init
no diretório do projetoTambém funciona se o
.git
já existir, apenas execute a etapa 2. O Dropbox manterá uma cópia dos arquivos git no site.A etapa 2 fará com que o Dropbox não sincronize a estrutura do sistema git, que é o resultado desejado para essa abordagem.
Por que alguém usaria essa abordagem?
As alterações ainda não enviadas terão um backup do Dropbox e serão sincronizadas entre os dispositivos.
No caso Dropbox parafusos alguma coisa durante a sincronização entre dispositivos,
git status
egit diff
será útil para resolver as coisas.Economiza espaço na conta do Dropbox (todo o histórico não será armazenado lá)
Evita as preocupações levantadas por @dubek e @Ates nos comentários da resposta de @ Dan e as preocupações de @clu em outra resposta .
A existência de um controle remoto em outro lugar (github, etc.) funcionará bem com essa abordagem.
Trabalhar em diferentes ramos traz alguns problemas que precisam ser resolvidos:
Um problema em potencial é ter o Dropbox (desnecessariamente?) Sincronizando potencialmente muitos arquivos quando se verifica diferentes ramificações.
Se dois ou mais dispositivos sincronizados do Dropbox tiverem ramificações diferentes, as alterações não confirmadas nos dois dispositivos poderão ser perdidas,
Uma maneira de contornar esses problemas é usar
git worktree
para manter as caixas registradoras em diretórios separados.fonte
xattr -w com.dropbox.ignored 1 /path/to/somewhere
,.Para meus 2 centavos, o Dropbox só faz sentido para uso pessoal, onde você não quer se preocupar em obter um host de repo central. Para qualquer desenvolvimento profissional, você provavelmente criará mais problemas do que resolverá, como já foi mencionado várias vezes no tópico, o Dropbox não foi projetado para este caso de uso. Dito isso, um método perfeitamente seguro para despejar repositórios no Dropbox sem plugins ou ferramentas de terceiros é usar pacotes. Tenho os seguintes aliases
.gitconfig
para salvar a digitação:Exemplo:
fonte
Eu enfrentei um problema semelhante e criei um pequeno script para o mesmo. A idéia é usar o Dropbox com Git da maneira mais simples possível. Atualmente, implementei rapidamente o código Ruby e em breve adicionarei mais.
O script está acessível em
https://github.com/nuttylabs/box-git
.fonte
Sem usar ferramentas de integração de terceiros, eu poderia melhorar um pouco a condição e usar o DropBox e outros serviços de disco em nuvem semelhantes, como o SpiderOak com Git.
O objetivo é evitar a sincronização no meio dessas modificações de arquivos, pois ele pode carregar um estado parcial e depois fazer o download novamente, corrompendo completamente o seu estado git.
Para evitar esse problema, eu fiz:
git bundle create my_repo.git --all
.Não é perfeito, pois não há garantia de que não irá atrapalhar o estado git novamente, mas ajuda e, no momento, não obtive nenhum problema.
fonte
No MacOS, você também pode simplesmente interromper o Dropbox, fazer suas alterações e reiniciar o Dropbox. Estou usando a seguinte combinação e estou muito feliz com ela:
Nos dois (o diretório local do projeto gerenciado pelo git e o repositório remoto do git localizado no Dropbox), execute o seguinte comando para desativar o empacotamento automático (que é o principal problema com a sincronização do dropbox)
De tempos em tempos, comprima os repositórios com o dropbox desativado. Por exemplo, faço o seguinte no meu bash-build-script sempre que faço novos lançamentos dos meus aplicativos.
fonte