Atualmente, estou trabalhando em vários projetos diferentes. Eu uso o Mercurial para controle de versão (através do BitBucket) e SpiderOak para backup automatizado. Eu trabalho em duas máquinas, um desktop em casa e um laptop quando estou fora e aproximadamente. Eu configurei o SpiderOak para sincronizar automaticamente meus diretórios /home
(que contém vários repositórios para meus projetos) entre as duas máquinas.
Atualmente o SpiderOak também sincroniza a subpasta .hg
para cada repositório. Mas acho que isso está causando problemas. Acabei de confirmar e empurrei um repositório para o BitBucket da minha área de trabalho. Comecei então a trabalhar no projeto no meu laptop depois que o SpiderOak sincronizou os arquivos, mas sem puxar e atualizar do BitBucket. Então, quando tentei me comprometer e sair do meu laptop, recebi a seguinte mensagem de erro:
abort: push creates new remote head 7f6bf2d3292b!
(you should pull and merge or use push -f to force)
Por outro lado, eu costumava ter o SpiderOak apenas sincronizando as pastas do projeto sem sincronizar as pastas .hg
. Isso causou problemas ao usar o Mercurial também. Por exemplo, se eu trabalhasse em um projeto na minha área de trabalho e criasse um novo arquivo, digamos newfile.tex
, então seria sincronizado com o laptop via SpiderOak e (na área de trabalho) eu adicionaria ao repositório Mercurial via hg add newfile.tex
. Mas como a pasta .hg
não estava sincronizada entre as duas máquinas, o repositório no laptop não saberia sobre newfile.tex
, mesmo que eu o tenha adicionado ao repositório na área de trabalho. Eu não quero ter que adicionar os arquivos aos repositórios em ambas as máquinas individualmente.
Eu vejo que isso é um pouco rambly, Então a questão se resume ao seguinte:
- Devo sincronizar as pastas
.hg
ou não?
- Qual fluxo de trabalho devo usar para garantir que tudo esteja devidamente sincronizado e que o Mercurial não fique bravo comigo?