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 na minha cópia de trabalho

 svn switch NEW_SVN_PATH .

recebo um erro

 Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7'
    
por Pavel K. 18.08.2009 / 15:07

4 respostas

2

Após inicializar o novo svn reporsitry

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

enquanto isso pode funcionar, eu acho que, em vez de um relocate, um novo check-out pode ser bom

    
por 18.08.2009 / 15:14
2

Tive que lidar com isso. Eu uso o subversion hospedado e fiz um dump e, em seguida, importo. Seu processo de importação não transferiu o UUID do repo antigo para o novo, então recebi o mesmo erro do OP. Todas as respostas nos sites do Stack Exchange só lhe dizem como lidar com isso usando o "svnadmin setuuid", mas isso não era uma opção para mim já que 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 corrigi-lo, atualizando manualmente o UUID da minha cópia de trabalho :

Aviso: apenas tente isso se tiver certeza de que a cópia de trabalho e o repositório para o qual você está voltando estão absolutamente sincronizados. Não tenho certeza o que vai acontecer se eles não são.

O processo é basicamente substituir o antigo UUID pelo novo UUID nos arquivos nomeados "entries" nas pastas svn ocultas (pastas chamadas .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, vá para a raiz da sua pasta de trabalho.
  2. Execute o comando para remover recursivamente o atributo "somente leitura" dos arquivos "entries": attrib -R entries /S
  3. Use a função "substituir em arquivos" do editor de texto para substituir o UUID antigo pelo novo UUID. Eu usei o Visual Studio com as seguintes configurações: Procure: PATH_TO_WORKING_FOLDER_ROOT / Incluir subpastas: verificada / Veja esses tipos de arquivo: entradas
  4. Desfazer a etapa 2: attrib +R entries /S
  5. "Realocar" cópia de trabalho para novo URL. Eu usei o TortoiseSVN: clique com o botão direito do mouse na pasta de trabalho, TortoiseSVN- > Relocate.

Tudo que a etapa 5 faz é substituir a URL nos arquivos de "entradas", portanto, você pode fazer isso manualmente, se quiser. Também é possível com a ferramenta de linha de comando "svn", mas não sei o comando fora do topo da minha cabeça.

    
por 30.12.2010 / 06:27
0

Você pode definir o UUID em um repositório vazio. Em seguida, importe os arquivos que você possui. Você perderá seu histórico (não é mantido na cópia de trabalho). Mas, ao definir o UUID para corresponder ao seu repositório antigo, você evita a mensagem de erro no switch 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
    
por 18.08.2009 / 15:17
0

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

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

  1. Backup de todas as minhas alterações locais.
  2. rm -rf do diretório (o externo é registrado)
  3. remover svn:external (e confirmar isso)
  4. svn up
  5. adicione o svn:external novamente
por 06.09.2011 / 19:41