A restauração de um repositório Subversion e coloca-lo de volta Up-to-Date com alterações locais de Todos

StackOverflow https://stackoverflow.com/questions/1440950

Pergunta

Eu não usar o hotcopy para fazer backup de meu repositório Subversion. Nós usamos Visual SVN Server (mais recente) com tartaruga. Copiei C: \ Repositórios e apoiado que até há poucos dias e agora eu quero restaurá-lo

.

eu sou capaz de usar o repositório agora com a pasta Repository backup copiados.

e então eu acho que agora eu ir manualmente através de projeto local de todos na equipe para ver quem tem a revisão lates? Se assim que vai me levar horas.

Alguém sabe se este é o caminho certo ou única maneira? É realmente este manual? Eu acho que seria porque todos têm diferentes alterações localmente.

Foi útil?

Solução

Como sobre esta abordagem, cada desenvolvedor:

  1. Será uma TortoiseSVN -> Export de sua cópia de trabalho agora inválida para um local temporário
  2. Obtém um novo check-out a partir do repositório restaurado
  3. As cópias da cópia de trabalho exportada (isto é, há diretórios .svn), sobre a parte superior da nova cópia de trabalho
  4. Atualização e comprometer como de costume

Note que você pode obter mais conflitos de mesclagem do que o habitual, mas eles podem ser resolvidos da maneira usual.

Outras dicas

Todas as alterações que foram feitas desde o backup não estão presentes no repositório, e todos terão de fazer um novo check-out a partir do repositório restaurado. (Os números de revisão mudaram, e você terá uma bagunça se você não faz.)

Como para a recuperação de quaisquer alterações de cópias locais do desenvolvedor, sim, que vai ser bastante manual. No entanto, "diff" e "patch" são seus amigos. Se você não estiver familiarizado com cygwin, você vai querer obter isso e obter os pacotes diff, remendo, Diffutils e patchutils então você tem o comando 'diff' eo comando 'remendo'. Você pode usar o comando "diff" para criar um arquivo contendo o delta entre uma cópia da árvore de origem e outra. Você vai querer usá-lo como este:

diff -urN --exclude=.svn fresh_check_from_new_repo old_working_copy > developer1changes.patch
copy

Do que para cada desenvolvedor está trabalhando. Você pode tomar esses arquivos e aplicar as alterações a um check-out fresco usando o comando "patch" como esta:

cd working_copy
patch -p1 -i ...../developer1changes.patch

Você agora terá uma cópia de trabalho com as suas alterações. (Embora sem a sua svn acrescenta, rms o SVN, e alterações de propriedade.) A partir daí, determinar o que precisa ser comprometido.

Você pode usar o comando "filterdiff" para levar as porções de patch e filtro do muda para fora, tubo que a mancha, e ele será aplicado apenas essas alterações.

Editar: Outra opção: para cada desenvolvedor, crie um ramo e check-out esse ramo, em seguida, copiar a sua cópia local sobre os arquivos nessa nova cópia de trabalho e se comprometer.

Isso fica todo o trabalho no repositório onde ele não vai se perder. Então você vai ter que lidar com conflitos ao tentar mesclar os ramos no tronco. Nesse ponto, você deve ser capaz de usar as ferramentas GUI para selecionar o que muda para manter ou atirar.

Mas a resposta curta é: você tem um monte de trabalho a fazer desde que você não tem um backup muito recente do repo ... assim que uma vez vocês são capazes de trabalhar de novo, configurar um muito mais agendamento de backup freqüente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top