Combinando vários projetos do Subversion em um projeto

4

Há algumas semanas, migramos do CVS para o Subversion. Eu escolhi criar cada projeto ou pasta (sejam eles chamados no CVS) como um projeto separado no Subversion e acabei com a estrutura recomendada:

[svn_path]/Server/
  -- ProjectA/
     -- branches
        -- branch1
        -- branch2
     -- trunk
  -- ProjectB
     -- branches
        -- branch1
     -- trunk

Agora percebemos que essa não é a maneira de fazer isso em nosso projeto. Os diferentes projetos têm dependências strongs e o código está sendo comprometido com vários projetos ao mesmo tempo. A reintegração de um branch torna isso um grande problema, e nós realmente queremos reorganizar o repositório para que os projetos sejam combinados assim:

[svn_path]/Server/
    -- branches
       -- branch1
          -- ProjectA
          -- ProjectB
       -- branch2
          -- ProjectA
    -- trunk
       --ProjectA
       --ProjectB

Como isso é feito?

Para dar mais detalhes, adicionarei apenas que no CVS tivemos uma ramificação para todo o nosso código. Com o layout escolhido no svn nós temos um branch para cada projeto mas todos com o mesmo nome. Agora, o que eu quero voltar é que todo o código deve estar sob o mesmo ramo, então cada desenvolvedor só precisa olhar para a ramificação um para ver quais alterações serão mescladas.

A propósito - eu pesquisei no Google, etc. e não encontrei uma descrição que se encaixasse na minha inteligência; -)

    
por homaxto 21.10.2009 / 15:41

2 respostas

4

Estou assumindo que você tem tudo em um único repositório. Isso torna as coisas muito mais fáceis.

Isso é surpreendentemente mais fácil do que você imagina:

svn mkdir /svn/path/Server/branches/
svn mv /svn/path/Server/ProjectA/branches/ /svn/path/Server/branches/ProjectA/
svn mv /svn/path/Server/ProjectB/branches/ /svn/path/Server/branches/ProjectB/
svn mkdir /svn/path/Server/trunk/
svn mv /svn/path/Server/ProjectA/trunk/ /svn/path/Server/trunk/ProjectA/
svn mv /svn/path/Server/ProjectB/trunk/ /svn/path/Server/trunk/ProjectB/

Você pode querer fazer uma cópia do seu repositório para testar primeiro antes de tentar isso no seu repositório real.

    
por 21.10.2009 / 16:01
-1

Para o que você descreve, sugiro dar uma olhada no bazar ( link ), git ( link ) ou mercurial ( link ). Parece que você teria um uso melhor de um vcs distribuído do que com a subversão. Eu pessoalmente mudei de svn para bazar e estou muito feliz com isso.

    
por 22.10.2009 / 14:00

Tags