Eu tenho um arquivo como mostrado abaixo em um repo SVN que gostaria de reverter para uma versão anterior. Qual é a maneira de fazer isso no SVN? Eu quero apenas fazer o downgrade desse arquivo específico para uma versão mais antiga, não o repositório inteiro.
Obrigado.
$ svn log myfile.py
----------------------
r179 | xx | 2010-05-10
Change 3
----------------------
r175 | xx | 2010-05-08
Change 2
----------------------
r174 | xx | 2010-05-04
Initial
Respostas:
Se você deseja apenas o arquivo antigo em sua cópia de trabalho:
Se você quiser reverter, veja este tópico " Como retornar para uma versão mais antiga do nosso código no subversion? ".
fonte
O svn cat também faz uma revisão!
svn cat -r 175 mydir/myfile > mydir/myfile
fonte
isso deve reverter um único arquivo.
fonte
Para um único arquivo, você pode fazer:
svn export -r <REV> svn://host/path/to/file/on/repos file.ext
Você poderia fazer
svn revert <file>
isso, mas isso restaurará apenas a última cópia de trabalho.fonte
Até agora, todas as respostas aqui parecem ter desvantagens significativas, são complicadas (precisam encontrar o URI do repo) ou não fazem o que a pergunta provavelmente pediu: Como colocar o Repo novamente em um estado de funcionamento com a versão mais antiga do arquivo .
svn merge -r head:[revision-number-to-revert-to] [file-path]
A IMO é a maneira mais limpa e simples de fazer isso. Observe que trazer de volta um arquivo excluído não parece funcionar dessa maneira [1]. Consulte também a seguinte pergunta: Melhor maneira de reverter para uma revisão SVN anterior de um arquivo?[1] Para isso
svn cp -r [rev-number] [repo-URI/file-path]@[rev-number] [repo-URI/file-path] && svn up
, consulte também Qual é a maneira correta de restaurar um arquivo excluído do SVN?fonte
svn merge
não é necessário usar vários arquivos como argumento por algum motivo. Nesse caso, parece não fazer nada (sem uma mensagem de erro).A melhor maneira é:
Isso desfará todos os arquivos da revisão do que simplesmente reverter os arquivos que você não gosta de desfazer. Não esqueça o dash (
-
) como prefixo da revisão.Agora confirme as alterações.
fonte
Você quer fazer
svn merge -r [revision to revert from]:[revision to revert to] [path/filename]
Depois de fazer isso, você terá a revisão do arquivo em um estado comprometível. Confirme o arquivo.
fonte
Achei simples fazer isso através do
svn cat
comando, para que você nem precise especificar uma revisão.Provavelmente, isso não retrocederá os dados do inode (metadados), como registros de data e hora.
fonte
surpreendeu ninguém mencionou isso
sem descobrir o número da revisão, você pode escrever isso, se você acabou de confirmar algo que deseja reverter, isso não funcionará se você tiver alterado outro arquivo e o arquivo de destino não for o último arquivo alterado
fonte
svn merge -r HEAD:PREV file
que o @Nick Russo disse #Se forem apenas alguns arquivos e se você estiver usando o Tortoise SVN, poderá usar a seguinte abordagem:
fonte
Acabei de adicionar a resposta do @Mitch Dempsy, pois ainda não tenho representante suficiente para comentar.
Adicionar o --force substituirá a cópia local pela exportação e, em seguida, você poderá executar um commit svn para enviá-lo ao repositório.
fonte
Uma opção alternativa para um único arquivo é "substituir" a versão atual do arquivo pela revisão mais antiga:
Isso tem o recurso adicional de que as alterações indesejadas não aparecem no log desse arquivo (ou seja, svn log file.ext).
fonte
Se você deseja reverter um arquivo individual de uma revisão específica e conseguir confirmar, faça:
svn merge -c - [OldRev #] [Nome do arquivo]
ie
svn merge -c -150 myfile.py
Observe o negativo no número da revisão
fonte
fonte