Excluí um arquivo de um repo e agora quero colocá-lo de volta. O melhor que posso descobrir é:
- atualizar para a revisão antes de excluir
- copie os arquivos em outro lugar
- atualizar para a cabeça
- copie os arquivos de volta
- Adicione-os
- comprometer
Isso cheira mal e perde toda a história para arrancar. Deve haver uma maneira melhor de fazer isso. Já procurei no The SVN Book, mas não encontrei nada e agora estou procurando a lista de tags do SVN.
svn
tortoisesvn
restore
BCS
fonte
fonte
Respostas:
Use svn merge:
Então, um exemplo:
Para TortoiseSVN (eu acho ...)
Porém, isso não foi testado completamente.
Editado por OP : Funciona na minha versão do TortoiseSVN (o tipo antigo sem o próximo botão)
O truque é fundir ao contrário . Parabéns a sean.bright por me apontar na direção certa!
Edit: estamos usando versões diferentes. O método que descrevi funcionou perfeitamente com minha versão do TortoiseSVN.
Também digno de nota é que se houver várias mudanças no commit que você está fazendo a fusão reversa, você desejará reverter essas outras alterações uma vez que a fusão seja feita, antes de fazer o commit. Caso contrário, essas alterações extras também serão revertidas.
fonte
O problema em fazer um svn merge como sugerido por Sean Bright é que ele reintroduz outras alterações feitas na mesma revisão da exclusão. Uma cópia svn é uma operação mais direcionada que afetará apenas os arquivos excluídos.
Usando o Tortoise SVN você pode ressuscitar um arquivo que foi excluído do diretório da sua cópia de trabalho e de revisões posteriores do SVN, através de uma cópia svn como segue:
O arquivo excluído agora estará na pasta da cópia de trabalho. Para adicioná-lo novamente ao SVN, clique com o botão direito do mouse no arquivo restaurado e selecione SVN Commit.
NB: Este método irá preservar o histórico anterior do arquivo restaurado, no entanto, para ver o histórico anterior no log do TortoiseSVN você precisa se certificar de que "Parar ao copiar / renomear" está desmarcado na caixa de diálogo Mensagens de log.
fonte
svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/svn/trunk/path
merge
, mas eu não descobri.Para completar, isso é o que você teria encontrado no livro svn, se soubesse o que procurar. É o que você já descobriu:
Desfazendo alterações
Ressuscitando itens excluídos
Mesma coisa, da versão mais recente (e detalhada) do livro:
Desfazendo alterações
Ressuscitando itens excluídos
fonte
Use a funcionalidade de cópia do Tortoise SVN para reverter as alterações confirmadas:
espero que ajude
fonte
Sempre pareço usar svn copy como uma operação de servidor, então não tenho certeza se ele funciona com dois caminhos de trabalho.
Aqui está um exemplo de restauração de um arquivo excluído em uma cópia de trabalho local do projeto:
Enquanto estiver dentro do diretório do projeto. Isso também funciona para restaurar diretórios inteiros.
fonte
Se você está usando Tortoise SVN, você deve ser capaz de reverter as mudanças apenas daquela revisão em sua cópia de trabalho (efetivamente realizando uma fusão reversa), então faça outro commit para adicionar novamente o arquivo. As etapas a seguir são:
fonte
A maneira mais fácil de restaurar arquivos e não perder o histórico de revisão é usando a cópia SVN . O exemplo de mesclagem acima para mim parece uma maneira mais complexa de fazer a mesma coisa. Por que há necessidade de mesclar quando você simplesmente deseja restaurar uma revisão?
Eu uso o seguinte neste caso e funciona muito bem.
Sempre pareço usar
svn copy
como uma operação de servidor, então não tenho certeza se funciona com dois caminhos de trabalho.fonte
Com Tortoise SVN :
fonte
Você deve conseguir apenas verificar o arquivo que deseja restaurar. Tente algo como
svn co svn://your_repos/path/to/file/you/want/to/restore@rev
onderev
está a última revisão em que o arquivo existia.Eu tive que fazer exatamente isso há pouco tempo e se bem me lembro, usar a
-r
opção desvn
não funcionou; Tive que usar a:rev
sintaxe. (Embora eu possa ter lembrado ao contrário ...)fonte