Como atualizar o sistema de arquivos de subversão v2 para v3 FSFS

9

Primeiramente, estou tentando reintegrar uma ramificação no tronco (usando o TortoiseSVN), mas estou recebendo a mensagem de erro "A consulta de informações de mesclagem requer a versão 3 do esquema do sistema de arquivos FSFS; o sistema de arquivos E: / MyRepository / usa apenas a versão 2".

Realmente não era possível reintegrar ramificações em versões anteriores do subversion? Ou existe outra maneira de fazer isso?

De qualquer forma, como posso atualizar o sistema de arquivos da versão 2 para a versão 3?

cbp
fonte

Respostas:

6

Você não especificou a versão do Subversion que seu servidor está executando. Mas, com base na mensagem que você forneceu na pergunta, provavelmente é uma versão 1.4.x ou anterior. Não me lembro se havia um comando de atualização fornecido ou não para a conversão de 1.4.x para 1.5.x, mas a maneira certa de obter o repositório da versão 2 para a versão é um dump and load. Mas isso não importa muito, você precisará instalar o 1.6.x de qualquer maneira para acompanhar as novidades. Então, aqui estão as etapas que você precisa executar:

  • Atualize para o Subversion 1.6.x se ainda não o tiver
  • Despejar seu repositório existente usando o svnadmin dump
  • Crie um novo repositório, chame-o _new
  • Carregue seu novo repositório com o despejo do antigo usando svnadmin load
  • Copie o arquivo uuid do repositório antigo para o novo repositório
  • renomeie o repositório antigo para _old
  • renomeie o novo repositório para

Veja também as Perguntas frequentes do Subversion http://subversion.apache.org/faq.html#dumpload para um exemplo concreto.

Isso deve ajudá-lo a cuidar e o arquivo uuid evitará que seus clientes surtem. Faça uma atualização svn para ter certeza.

jgifford25
fonte
2
da svnadmin help loadmensagem: --force-uuid : set repos UUID to that found in stream, if any. Em suma: não há necessidade de jogar com arquivos
Hubert Kario
@Hubert Kario: Sim, a linha de comando tem essa opção. Mas nem todos os clientes da GUI fazem. E, se você pode fazê-lo no lado do servidor, isso facilita os usuários. Mas lembrarei dessa opção na próxima vez em que encontrar esse problema. Obrigado pela dica!
jgifford25
Ao criar seu novo repositório, tenha cuidado ao definir permissões. Por exemplo, se você estiver acessando o repositório via apache mod_svn, o apache será executado sob o usuário "www", grupo "www" e você estiver logado como "fred", provavelmente precisará de algo como: sudo chown -R fred:www myrepositoryseguido por um sudo chmod g+wparamyrepository/db/repcache.dbmyrepository/db/uuid
xgretsch
8

Despejo / carregamento não é necessário para atualizar os repositórios do Subversion. Use o comando svnadmin upgrade:

svnadmin upgrade <path-to-repos>

NOTA: svnadmin upgrade "executa apenas a quantidade mínima de trabalho necessária para isso, mantendo a integridade do repositório. Enquanto um dump e uma carga subsequente garantem o estado de repositório mais otimizado, o svnadmin upgrade não." - veja também a documentação de atualização do svnadmin

Ivan Zhakov
fonte
1
NOTA, no entanto, que isso "executa apenas a quantidade mínima de trabalho necessária para isso, mantendo a integridade do repositório. Enquanto um dump e uma carga subsequente garantem o estado do repositório mais otimizado, o svnadmin upgrade não". - veja também svnbook.red-bean.com/en/1.7/svn.ref.svnadmin.c.upgrade.html
Jörg
1
Observe também que "você deve sempre fazer backup do seu repositório antes" usando o svnadmin upgrade, enquanto que com o dump / load você meio que faz o backup implicitamente.
Jörg
5

Ivan tem uma boa dica que funciona, eu tentei e é muito simples.

svnadmin upgrade <path-to-repos>

Uma coisa que eu perdi no exemplo da Ivans que pode ser útil para outras pessoas é:

Ex.

<path-to-repos> = C:\repos\theRepo
(ie. NOT C:\repos\theRepo\db)

Não aponte svnadmin no diretório db, mas no diretório que contém o diretório db.

Por G
fonte