Edit : Tornando isso ainda mais claro quando a recompensa está prestes a expirar: existe uma maneira de importar o histórico (retirando de diferentes SCM) diretamente para um ramo específico do Mercurial?
Atualmente, estou trabalhando em uma empresa que usa o Perforce e estou abrindo caminho para o controle de versão distribuído com o Mercurial. Tive sucesso ao importar a história do Perforce usando a perfarce (um nome bastante adequado, eu rio cada vez que vejo / digo), no entanto, isso só funciona com um único ramo de cada vez.
Veja como minha configuração de integração P4 funciona:
- Forforce, crie um "cliente", que é uma espécie de descrição do que você estará constantemente atualizando / fazendo check-out. Isso pode endereçar apenas uma ramificação por vez (tronco ou outro).
- Depois de fazer isso, execute
hg clone p4://<server>/<client_name>
- Vá para .hg / hgrc e coloque a linha de caminho do forforce:
perforce = p4://<server>/<client_name>
- Trabalhe normalmente com o código em mercurial, faça
hg pull perforce
para sincronizar,hg push
para exportar uma lista de alterações
O que eu gostaria de poder fazer é ter um caminho forçado por filial e ter tudo funcionando no mesmo repositório. Agora, empurrar não é um problema, no entanto, se eu puxar o histórico de outro ramo, ele acabará no ramo padrão.
Eu gostaria de ser capaz de fazer algo assim hg pull perforce-R5
e ter a terra no ramo R5 do mercurial. Mesmo que eu não possua histórico de fusão, seria bom o suficiente para preservar o histórico do ramo.
Existem também outros plugins para CVCSs que permitem integrar o mercurial, mas o AFAIK, o subversion, tem o mesmo problema.
Eu não acho que exista uma maneira direta de fazer isso, mas contanto que eu pudesse automatizar o processo com alguns ganchos e scripts em uma única máquina Mercurial, isso seria bom o suficiente.
Edit : Para tornar as coisas um pouco mais claras:
- O tronco Perforce é mapeado para a ramificação padrão do Mercurial
- A ramificação Perforce R1 deve ser mapeada para a ramificação release-1 do Mercurial (o mesmo para R2, R3 etc.)
- Quando digo ao Mercurial para extrair do forforce (ou seja
hg pull perforce
, onde "forforce" é o nome do caminho que aponta para o cliente Perforce), ele deve puxar o tronco do Perforce para o padrão do Mercurial. - Quando digo ao Mercurial para extrair do perforce-R1 (ou seja
hg pull perforce-R1
, onde "perforce-R1" é o caminho para o cliente R1), ele deve puxar a ramificação do Perforce R1 para a ramificação "release-1" da Mercurial. Esta é a parte que estou perguntando .