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?


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.


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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.