Sincronizando o SVN para mercurial usando SvNSync & Hg Convert - Misses SVN: Externos?
-
27-09-2019 - |
Pergunta
Eu criei um espelho mercurial de um repositório SVN (usando este tutorial: http://oreilly.com/opensource/excerpts/opensource-mercurial/migrating-to-mercurial.html). A sincronização funciona muito bem, exceto que notei que não está pegando um repositório externo que é referenciado no Repo SVN principal ...
Idealmente, gostaria de poder puxar tudo como um único repositório para o Mercurial (junto com as mudanças, se possível).
O que eu não tenho certeza é: a falta de limitação externa do SVNSYNC ou uma limitação de HG é convertida?
Existe alguma maneira de forçar o externo a ser sincronizado também, no mesmo repo mercurial?
Estou pensando que uma boa solução seria configurar o processo de sincronização novamente, para o externo. Crie um garfo do espelho Hg atual e sincronize o externo no garfo Hg Mirror.
O problema é que o porta -malas externo deve entrar em uma subpasta do primeiro espelho, então como posso replicá -lo com convertido? Duvido que eu possa dizer ao converter para importar em uma subpasta ...
Solução
A limitação externa ausente de svnSync ou uma limitação de Hg é convertida?
svnsync
é usado para criar um espelho de um repositório SVN. Isso inclui qualquer svn:externals
propriedades. Portanto, deve ser uma limitação de hg convert
.
Observe que você realmente não precisa criar um espelho com svnsync
. O artigo recomenda isso apenas porque ter uma cópia local pode acelerar o processo de conversão.
Existe alguma maneira de forçar o externo a ser sincronizado também, no mesmo repo mercurial?
É comum que um repositório SVN contenha vários projetos vagamente relacionados, cada um com suas próprias ramificações e tags. Mas o Mercurial não funciona dessa maneira: quando você ramifica, você ramifica tudo o que está no repositório. Você deve criar um repositório mercurial separado para cada projeto no SVN que possui seu próprio tronco/ramificações/tags. Essa abordagem diferente é mais provável por que hg convert
ignora os externos, mesmo que estejam no mesmo repositório SVN.
Há um equivalente a svn:externals
em mercurial; É chamado de "subrepositórios". Em vez de ter um ou mais svn:externals
propriedades, você tem um único .hgsub
Arquive com conteúdo semelhante na raiz do seu projeto. Você deve primeiro converter cada projeto SVN em um repositório mercurial separado e depois conectá -los aos sub -repositórios. Veja o Página do Wiki Mercurial para subrepositórios para mais detalhes.