Ter um repositório Git e mercurial no mesmo diretório

11

Vou explicar o meu problema,

Atualmente, estou usando uma instalação interna de gitorious using git. Eu gostaria de começar a testar o FogBugz e o Kiln de Fog Creek, que usam mercurial. Gostaria de pelo menos um pouco continuar o desenvolvimento usando as duas soluções.

Alguém sabe de quaisquer efeitos sérios a longo prazo de ter um git e um repositório mercurial no mesmo diretório. Ou existe uma maneira melhor de manter o git e o servidor mercurial sincronizados.

Eu tentei com um repositório de teste e não vi nenhum problema.

Obrigado por qualquer ajuda.

D. Mathis
fonte
1
Eu não acho que haveria muito problema, pois eles são isolados ao contrário dos .svnarquivos do svn .
Josh K

Respostas:

8

Eu encontrei a ponte hg-git bastante útil indo na outra direção (expondo algumas coisas no Github que foram originalmente construídas usando o Mercurial para controle de origem). Basicamente, você "apenas" usa o mercurial, cria um marcador vinculando "mestre" ao "padrão" quando estiver pronto para enviar para um repositório git e pressionar. O pull do git funciona da mesma forma que quando você extrai de um repositório remoto. Você não acaba com os arquivos .git + .hg nesse cenário, apenas possui arquivos mercuriais em sua caixa local, a menos que acabe migrando para o git por completo, caso em que provavelmente faria o clone do git em um novo diretório.

Existe um projeto semelhante para usuários do git que desejam extrair / extrair dos repositórios do Mercurial, mas não tenho experiência direta com ele. Consulte https://github.com/offbytwo/git-hg

Além do potencial de fazer o check-in acidental de várias pastas ocultas do seu "outro" sistema de controle de código-fonte, não vejo nenhum problema real ao executar o hg init em um repositório git; apenas me parece menos complicado usar uma ponte e escolher explicitamente quando enviar para o outro sistema dvcs.

JasonTrue
fonte
Eu achei o hg-git um pouco imprevisível com o SSH e é menos do que divertido de configurar. Você pode executar os dois clientes DVCS na mesma máquina, sem probs. De fato, se você estiver usando um para controle de origem e outro para enviar à produção (Azure, Appharbor etc.), isso pode funcionar bem.
CAD bloke
dê uma olhada na pasta .hg. O hg-git cria uma pasta .git lá, a menos que você especifique [git] intree = true no seu arquivo .hgrc / ini para mercurial.
CAD bloke
9

Eu usei mercurial e git no mesmo projeto, no mesmo diretório de trabalho. O melhor de usar esses dois DVCSs é que ambos têm apenas uma pasta (.git / .hg) para seus confs, blobs, árvores e outras coisas.

Basta colocar .hg em .gitignore (e .git em .hgignore) e você estará pronto para prosseguir.

É claro que você precisa dobrar o trabalho ao se comprometer, mas não achei difícil de gerenciar.

Essa configuração, na minha opinião, é muito mais confiável do que usar qualquer solução de ponte (não gosto desde o horror que tive com o git-svn).

Vladaimir Cetkovic
fonte
Você pode dar mais informações sobre como conseguiu isso? Tenho uma pergunta aqui, stackoverflow.com/questions/14486600/…, que parece ter sido alcançada por você. Qualquer ajuda é apreciada :)
akdsouza