Pergunta

Eu estou usando eclipse / subclipse para o desenvolvimento. Eu também tenho o cliente TortoiseSVN.

Eu estou tentando mover um repositório CVS. O velho repositório CVS tinha um único projeto. Queremos reogranize como vários dos projectos têm os seus próprios fluxos de desenvolvimento, e deve ser gerido separadamente.

Eu corri a jogada padrão de repositório usando cvs2svn, e não tinha problemas.

Eu quero reestruturar os projetos no repositório do Subversion, então após o cvs2svn, tentei fazer um movimento svn e fez a reestruturação. Eu era capaz de fazer com sucesso a mudança, mais uma vez sem problemas.

I verificar o projeto no eclipse, e depois escolher um arquivo em um dos movidos projetos. Ele aparentemente não importa qual projeto. Se eu fizer uma versão de atualização no eclipse, e escolher uma versão da história do arquivo para atualizar a, o arquivo é excluído do meu sistema de arquivos, mas a versão mais antiga nunca vem para baixo. O arquivo é simplesmente desapareceu.

Eu tenho o mesmo problema usando TortoiseSVN, assim que eu supor que não é uma questão subclipse.

O interessante é que se eu fizer um svn move de um projeto volta em seu local original onde foi inicialmente convertido para e siga os mesmos passos, eu não tenho quaisquer problemas, o update Versão funciona como esperado.

Assim, a minha pergunta (s):

  1. Eu fiz alguma coisa errada durante o movimento cvs2svn que me impede de reorganizar com sucesso meu repositório Subversion?
  2. Existe uma maneira melhor de fazer o que estou tentando fazer?
Foi útil?

Solução

Onde eu trabalho, nós decidimos mover os arquivos no SVN após a importação do CVS. CVS tem limitado as capacidades de história com o movimento, enquanto o repositório SVN pode ser "revertida" para ver o que parecia ser a qualquer momento. Mais uma vez, ao fazer isso, a decisão foi tomada que a manutenção de um histórico de todas as alterações e movimentos era mais importante.

O que temos feito é mover o módulo do CVS para SVN como é. Em seguida, usando o navegador do repositório, mova todos os arquivos, conforme necessário, antes de um check-out.

Agora, isso não resolver o seu problema quando você atualizar um arquivo individual para uma versão mais antiga que pode desaparecer. Nós decidimos viver com isso, porque nós estamos tentando se afastar de uma visão do repositório (CVS) para um baseado em instantâneo arquivo-centric. Então, se temos de voltar para uma versão mais antiga, que atualizar todo o projecto. Se você está apenas olhando para a história diff, que funciona bem a partir de TortoiseSVN quando permitimos movimentos / renomeações.

Outras dicas

  1. Não, você não fez nada de errado
  2. Sim. Você deve reorganizar seu repositório CVS antes de importá-lo via cvs2svn

A razão para este sintoma:

Você sempre precisa verificar uma pasta. Se você atualizar para uma versão anterior, esta pasta pode não existir (a pasta foi movida), então o Subversion irá apagar seu conteúdo. Renomear no Subversion é sempre implementado como remover e adicionar. Então você tem uma conexão fina entre arquivos, mas é apenas para a história deste ficheiro. Se você quiser ver o novo layout que você precisa fazer check-out uma pasta que contém ambos: pasta de destino e de origem. Do que você vai ser capaz de "ver" o movimento desta pasta, no entanto, se você só tem uma das pastas na sua saída, a pasta irá simplesmente desaparecer e você precisa fazer check-out um URL diferente (seja alvo ou fonte).

Por isso, é mais fácil de reestruturar os seus projectos em CVS e depois migrar. Desvantagem:. Você não terá qualquer história de sua reestruturação e você não é capaz de construir / versões anteriores de compilação (que foram criados no CVS)

Concordo com Peter Parker que é fácil e preferível reorganizar os projetos em CVS antes da conversão para Subversion, se o que você quer fazer é pastas reorganizam e arquivos dentro de projetos individuais.

Mas se você quiser reorganizar o layout dos próprios projectos (ou seja, onde um projeto vive em relação a outro), você pode fazer isso facilmente, como parte da conversão cvs2svn. Quando você faz multiproject conversão , você pode especificar onde cvs2svn deve colocar o tronco, Uma ramos e tags diretórios para cada um dos projetos. Basta colocá-los de acordo com sua organização novo projeto desejado e, em seguida, você deve ter nenhum problema em trabalhar com o repositório usando qualquer uma das ferramentas habituais.

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