Pergunta

Estou convertendo do repositório CVS existente para o repositório SVN.O repositório CVS tem poucos braces e eu gostaria de renomear os ramos durante a conversão.

A conversão desejada é assim:

CVS branch         SVN branch
HEAD       ->      branches/branchX
branchA    ->      trunk
branchB    ->      branches/branchB
branchC    ->      branches/branchC

Ou seja, CVS HEAD torna-se uma ramificação normal e CVS branchA torna-se um tronco SVN.

Os repositórios CVS e SVN estarão na mesma máquina Linux.

Como isso poderia ser feito?

Além disso, a conversão onde CVS branchA se torna tronco SVN e todas as outras ramificações CVS são ignoradas pode ser suficiente.

Foi útil?

Solução

Estou especialmente interessado em preservar o histórico de commits.Se eu renomear e mover ramificações no SVN após a conversão, o histórico será preservado?

Sim.O Subversion também mantém registro das alterações na estrutura de diretórios, e todo o histórico da versão é preservado mesmo se um arquivo for movido na árvore.

Eu recomendo converter o repositório com cvs2svn, incluindo ramificações e tags.Quando o repositório estiver no Subversion, você poderá mover as ramificações e tags como desejar.Isso também mantém o histórico das tags e ramificações reais que estão sendo renomeadas, o que pode ser interessante em um contexto histórico posterior.

Outras dicas

Já faz um tempo que não faço uma conversão CVS -> SVN, e provavelmente ainda mais desde que fiz uma com uma estrutura de ramificação não trivial.Como o SVN pode mover-se pelas árvores de diretórios com bastante facilidade, você pode fazer toda a conversão primeiro e depois classificar a estrutura de troncos/ramos inteiramente dentro do SVN.

Se você chegar a esse ponto e estiver movendo árvores de diretórios inteiras dentro do SVN, provavelmente será melhor se você fizer commit após cada etapa de renomeação/mover árvore.Apenas algo para ter em mente.

As ramificações do Subversion são diretórios, então você pode simplesmente mover as ramificações após a conclusão da importação e nenhum histórico será perdido.

Algumas informações adicionais para apoiar a resposta aceita:

cvs2svn não permite conversão de trunk para branch ou de branch para trunk

então mover as coisas depois de convertido para svn é o melhor caminho a percorrer.

É possível mover os diretórios trunk e branch após a conversão, mas isso exigiria um commit SVN pós-conversão explícito que permanecerá em seu histórico SVN, tornando a exploração do histórico um pouco mais complicada.

Mas você pode realmente dizer ao cvs2svn para armazenar o tronco e as ramificações nos caminhos SVN que você deseja usando o comando --symbol-hints=symbol-hints.txt opção de linha de comando ou (se você estiver usando um arquivo de opções para sua conversão) o SymbolHintsFileRule('symbol-hints.txt') regra de estratégia de símbolo, onde symbol-hints.txt é um arquivo contendo linhas como as seguintes:

. .trunk. trunk branches/branchX .
. branchX branch trunk .

Observe que algumas mensagens de commit geradas automaticamente pelo cvs2svn (por exemplo, para a criação do branch) mencionarão o nome original do branch.

Embora seja possível mover-se pelas ramificações após a conversão ser feita, pode ser melhor configurar o arquivo de configuração cvs2svn para especificar exatamente o nome que você deseja para cada uma das ramificações existentes.Um dos benefícios disso é que o FishEye compreenderá o resultado muito melhor.

Estou especialmente interessado em preservar o histórico de commits.Se eu renomear e mover ramificações no SVN após a conversão, o histórico será preservado?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top