Encontrei vários exemplos de como reverter um commit SVN como
svn merge -r [current_version]:[previous_version] [repository_url]
ou
svn merge -c -[R] .
Mas nenhum deles parece funcionar. Eu tentei esses comandos e verifiquei os arquivos que foram alterados manualmente.
Como reverto um commit com o número de revisão 1944? Como verifico se a reversão foi feita (sem olhar no arquivo real, as alterações foram revertidas)?
Respostas:
Ambos os exemplos devem funcionar, mas
svn merge -r UPREV:LOWREV .
desfazer intervalosvn merge -c -REV .
desfazer revisão únicanesta sintaxe - se o diretório atual for WC e (como deve ser feito após cada mesclagem), você confirmará os resultados
Deseja ver logs?
fonte
svn: Merge source required
. Sem dados.svn merge -c -42587,-42589 .
Se você estiver usando o cliente TortoiseSVN , isso é feito facilmente através da caixa de diálogo Mostrar log .
fonte
svn merge -r 1944:1943 .
deve reverter as alterações do r1944 na sua cópia de trabalho. Você pode revisar as alterações em sua cópia de trabalho (com diff), mas precisaria confirmar, a fim de aplicar a reversão no repositório.fonte
svn merge -r 1944:1943 .
vez disso, mas nada mudou.svn status
nemsvn diff
dá nada.svn: Try 'svn help' for more info svn: Merge source required
svn merge -r 1945:1943 .
parece ter funcionado. Eu acho que entendi: você precisa mesclar a versão de 'antes' do 'ruim' no seu repositório de trabalho. Tudo bem quando você deseja fazer uma simples 'reversão' da confirmação anterior. Mas e se você quiser reverter as alterações feitas na versão 1900?Primeiro, reverta a cópia de trabalho para 1943.
Segundo, verifique o que está prestes a ser confirmado.
Terceiro, confirme a versão 1945.
Quarto, observe o novo log.
fonte
É impossível "descomprimir" uma revisão, mas você pode reverter sua cópia de trabalho para a versão 1943 e confirmar como a versão 1945. As versões 1943 e 1945 serão idênticas, revertendo efetivamente as alterações.
fonte
svn dump
e entãosvn load
. Mas, é claro, isso não deve ser usado em circunstâncias normais.$ git revert
. Achei um pouco difícil aprender SVN depois de usar o Git por tanto tempo.A seguir, será executado a seco, como diz. HEAD sendo a versão atual, PREV é anterior, então o caminho para o seu arquivo ou item confirmado:
Se a execução a seco parecer boa, execute o comando sem o comando --dry-run
Verifique a alteração na revisão e confirme novamente. Para procurar números de versão, tente:
fonte
fonte
Alex, tente o seguinte: svn merge [WorkingFolderPath] -r 1944: 1943
fonte
Embora as sugestões fornecidas já possam funcionar para algumas pessoas, elas não funcionam no meu caso. Ao realizar a mesclagem, os usuários nos
rev 1443
quais atualizamrev 1445
ainda sincronizam todos os arquivos alterados,1444
mesmo que sejam iguais à1443
mesclagem. Eu precisava que os usuários finais não vissem a atualização.Se você deseja ocultar completamente a confirmação, é possível criando uma nova ramificação na revisão correta e trocando as ramificações. A única coisa é que você precisa remover e adicionar novamente todos os bloqueios.
Isso funcionou para mim, talvez seja útil para alguém lá fora =)
fonte
Isso salvou minha vida.
Eu estava tendo o mesmo problema, depois de reverter também não estava vendo o código antigo. Depois de executar o comando acima, recebi um código de versão antigo limpo.
fonte
Eu tentei o acima, (
svn merge
) e você está certo, sim. Contudoparece funcionar, mas não é permanente (meu svn está simplesmente mostrando uma revisão antiga). Então eu tive que
No meu caso particular, meu objetivo é
interfaces/AngelInterface.php
. Fiz alterações no arquivo, confirmei-as, atualizei o computador de compilação, executei o compilador phpdoc e descobri que minhas alterações eram uma perda de tempo.svn log interfaces/AngelInterface.php
mostra minha alteração como r22060 e a confirmação anterior nesse arquivo foi r22059. Então eu possosvn update -r 22059 interfaces/AngelInterface.php
e acabo com o código como estava em -r22059 novamente. Então :-Como alternativa, eu poderia fazer a mesma coisa em um diretório, especificando
. -R
no lugar deinterfaces/AngelInterface.php
todos os itens acima.fonte
Se você deseja remover completamente as confirmações do histórico, também pode fazer um despejo do repositório em uma revisão específica e importá-lo. Especificamente:
O comando svnrdump executa a mesma função que o svnadmin dump, mas funciona em um repositório remoto.
Em seguida, basta importar o arquivo de despejo para o seu repositório de sua escolha. Isso foi testado para funcionar bem no Beanstalk.
fonte