Como importar parte de um repositório SVN para o bazar

1

A situação

Estou a executar o bazar 2.4.1

Uma empresa de 'hospedagem de projetos' hospeda meu repositório svn para Project A em:

https://svn.example.com/myrepo/trunk/ProjectA/

Eu não tenho acesso ao svn-admin para o repositório em svn.example.com .

Dentro do projectA repo, existe um diretório que contém todo o código para Component X . Sua localização do svn é:

https://svn.example.com/myrepo/trunk/ProjectA/ComponentX

O objetivo

Estou tentando dividir Component X do repositório SVN do Project A para se tornar Project B . Onde Project B tem versão no Bazar.

O plano

Meu plano é:

  1. Crie um repositório bzr local para Project B
  2. Use bzr svn-import para importar Component X de Project A para o meu local Project B
  3. Em seguida, envie Project B para o Launchpad
  4. Então, svn-delete o antigo Component X direcotry do svn repo.

Estou preso no passo 2.

Até aqui tudo bem

Portanto, no meu Windows XP, criei um repositório bzr para Project B :

# cd C:\me\OpenSource\
# bzr init-repo ProjectB

Então, mudei para o diretório:

# cd ProjectB

Isso vai um pouco errado

Então, eu tentei bzr svn-import pegar o diretório svn:

# bzr svn-import https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/

Isso, no entanto, gera um erro:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a
different repository layout (see also 'bzr help svn-layout').

Eu tentei várias coisas e continue recebendo o mesmo erro.

Coisas que tentei

Tentou: Modificar o subversion.conf para indicar que o ComponentX é um ramo

Depois de analisar 'bzr help svn-layout' , modifiquei C:\Documents and Settings\Me\Application Data\bazaar.0\subversion.conf e adicionei uma linha para indicar que /ComponentX deve ser tratado como uma ramificação:

[203ae883-c723-44c9-aabd-cb56e4f81c9a]
branches = */ComponentX

Isso não funcionou. Mesmo erro:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a
different repository layout (see also 'bzr help svn-layout').

Tentei: especificar um layout de repositório diferente como argumento

i.e. passando-o como um argumento: --layout=root (Porque eu queria que esse caminho fosse tratado como raiz do novo repositório bzr):

# bzr svn-import --layout=root https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/

Isso não funcionou. Mesmo erro:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a
different repository layout (see also 'bzr help svn-layout').

Então, tentei apenas dizer --layout=none :

# bzr svn-import --layout=none https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/

Isso não funcionou. Mesmo erro:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a
different repository layout (see also 'bzr help svn-layout').

Para ser honesto, estou hackeando agora.

Eu simplesmente não sei onde estou indo errado.

    
por JW. 09.11.2011 / 18:59

2 respostas

1

O svn-import é especificamente destinado a importar todos os branches de um repositório do Subversion. A opção --layout é usada para especificar o que considera uma ramificação. Parece que você está tentando clonar um único branch, para o qual "bzr branch" é de fato o comando correto.

Para explicar os layouts:

Asteriscos na configuração "branches=" não atravessam mais de um nível de diretórios. Definir "branches = trunk / * / ComponentX" no subversion.conf seria o valor correto. Parece que o erro do bzr-svn é um pouco confuso. Realmente, deve estar dizendo que o caminho que você especificou não contém nenhuma ramificação.

Isso significa que --layout = root apenas fará com que considere link uma ramificação. Isso explica por que você recebe o erro sobre a especificação de uma ramificação dentro de um caminho.

    
por 10.11.2011 / 17:06
0

Em resposta a minha própria pergunta.

Em vez de lutar com bzr svn-import , contorne o problema usando bzr branch . Ele realmente não responde às perguntas por que bzr svn-import está jogando erros, mas resolve o problema.

Assim, na situação em que uma empresa de 'hosting de projetos' hospeda seu repositório svn para Project A em:

https://svn.example.com/myrepo/trunk/ProjectA/

e dentro do projectA repo, existe um diretório que contém todo o código para Component X . Sua localização do svn é:

https://svn.example.com/myrepo/trunk/ProjectA/ComponentX

e onde o objetivo é dividir Component X do repo SVN de Project A para se tornar Project B . Onde Project B tem versão no Bazar.

O plano deve ser:

  1. Crie um repositório bzr local para Project B
  2. Use bzr branch para despejar Component X de Project A no meu local Project B
  3. Em seguida, envie Project B para o Launchpad
  4. Recomendado: não se esqueça de excluir o svn Component X de Project A para evitar duplicação.

Assim:

1. Crie um repositório bzr local para Project B

Então, no meu Windows XP, eu crio um repositório bzr para Project B :

# cd C:\me\OpenSource\
# bzr init-repo ProjectB

Depois, mude para esse diretório:

# cd ProjectB

2. Use bzr branch para despejar Component X de Project A no meu local Project B

Em seguida, crie um branch local a partir do subdiretório svn repo:

# bzr branch https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/ ComponentX

3. Em seguida, envie Project B para o Launchpad

Em seguida, envie-o para criar a filial hospedada na barra de ativação de acordo com as instruções nos documentos do bazar :

# bzr push lp:~mylaunchpadteam/mylaunchpadproject/trunk

Em seguida, talvez ajuste a estrutura do diretório e adicione arquivos para convertê-lo em um 'projeto'.

    
por 10.11.2011 / 10:39

Tags