recriando o repositório svn


8

após uma falha grave no servidor, o repositório svn foi destruído e minha versão de trabalho é a mais atual,

qual é a maneira de recriar o repositório svn da minha versão de trabalho?

depois de instalar o svn em um novo servidor e tentar minha cópia de trabalho

 svn switch NEW_SVN_PATH .

eu recebo um erro

 Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7'

Respostas:


2

Depois de inicializar o novo repositório svn

  1. no cliente, faça uma exportação svn do diretório de trabalho atual para um local diferente
  2. a partir da localização exportada, faça uma importação svn para o novo svn url
  3. agora faça um svn realocar para o novo repositório criado.

Embora isso possa funcionar, acho que, em vez de realocar, um novo checkout pode ser bom


2

Teve que lidar com isso. Eu uso o subversion hospedado, fiz um despejo e depois importei. O processo de importação deles não transferiu o UUID do repositório antigo para o novo, então eu recebi o mesmo erro do OP. Todas as respostas nos sites do Stack Exchange apenas explicam como lidar com isso usando "svnadmin setuuid", mas essa não foi uma opção para mim, pois eu uso um serviço hospedado (e, portanto, o svnadmin não terá acesso ao repositório ) Eu poderia ter inserido um ticket, mas não queria lidar com a espera, então aqui está como eu o corrigi, atualizando manualmente o UUID da minha cópia de trabalho :

Aviso: tente isso apenas se tiver certeza de que a cópia de trabalho e o repositório para o qual está apontando novamente estão absolutamente sincronizados. Não tenho certeza do que acontecerá se não estiverem.

O processo é basicamente substituir o UUID antigo pelo novo UUID nos arquivos chamados "entradas" nas pastas svn ocultas (pastas denominadas .svn ou _svn) da sua cópia de trabalho. Feito isso, você pode usar o "relocate" do TortoiseSVN para apontar o diretório de trabalho para o novo URL do repositório.

  1. Na janela do console, CD para a raiz da sua pasta de trabalho.
  2. Execute o comando para remover recursivamente o atributo "somente leitura" dos arquivos "entradas": attrib -R entries /S
  3. Use a função "substituir em arquivos" de um editor de texto para substituir o antigo UUID pelo novo UUID. Usei o Visual Studio com as seguintes configurações: Examinar: PATH_TO_WORKING_FOLDER_ROOT / Incluir subpastas: marcado / Examinar estes tipos de arquivo: entradas
  4. Desfazer a etapa 2: attrib +R entries /S
  5. "Realocar" a cópia de trabalho para o novo URL. Eu usei o TortoiseSVN: clique com o botão direito do mouse na pasta de trabalho, TortoiseSVN-> Realocar.

Tudo o que a etapa 5 faz é substituir as URLs nos arquivos de "entradas" que eu penso, então você poderá fazer isso manualmente, se quiser. Também é possível com a ferramenta de linha de comando "svn", mas não conheço o comando de cima para baixo.


Isso é intenso. Isso é mesmo necessário? Eu só estou tentando descobrir isso, pois meu provedor aparentemente mudou nossos repositórios e recebo o mesmo erro.
Até

0

Você pode definir o UUID em um repositório vazio. Importe os arquivos que você possui. Você perderá seu histórico (ele não é mantido na cópia de trabalho). Mas, configurando o UUID para corresponder ao seu repositório antigo, você evita a mensagem de erro no comutador svn.

$ svnlook uuid /var/svn/repos
cf1b8d31-acb6-02dc-bc7c-16e92ce6dbec
$ svnadmin setuuid /var/svn/repos   # generate a new UUID
$ svnlook uuid /var/svn/repos
4c2c49fe-acc1-23dc-acbc-2b28ff0c9e6c
$ svnadmin setuuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242  # restore the old UUID
$ svnlook uuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242

minha versão do servidor svnadmin não tinha o subcomando setuuid, acho que é um dos comandos mais recentes. Então eu achei um arquivo db / UUID no repositório, mas depois de modificar o número nele, svn ainda reclamou que não é o mesmo repositório
Pavel K.

0

Eu tive o mesmo problema, mas como usamos uma opção hospedada, também não consegui svnadmin.

Este foi um externo que usei em outro projeto e fiz isso para corrigi-lo:

  1. Faça backup de todas as minhas alterações locais.
  2. rm -rf o diretório (o externo é verificado)
  3. remover svn:external(e confirmar isso)
  4. svn up
  5. adicione o svn:externalnovamente
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.