Patcheando com o Vim
Publicado em Developer
O Vim realmente não deixa de me surpreender mesmo após um bom tempo usando ele o dia inteiro. Hoje descobri um recurso muito útil para os desenvolvedores (olha eu no meio ehehe).Vou descrever abaixo como podemos criar e aplicar patches com esse ótimo. editor.
Vamos criar um arquivo, chamado, digamos, foo.rb, com o seguinte conteúdo:
1 class Foo 2 def foo 3 puts "xoo!" 4 end 5 end
Aí o Juquinha (putz, de onde tirei isso) pega meu código e vê que eu escrevi a string do método errado, e resolve fazer um patch, também adicionando outra classe chamada Bar. Ele abre o arquivo no Vim, corrige a string para "foo", cria (em um arquivo chamado foo.patch) e envia o patch, que resulta em:
--- foo.rb.orig 2007-08-01 16:19:03.000000000 -0300 +++ foo.rb 2007-08-01 16:19:26.000000000 -0300 @@ -1,5 +1,11 @@ class Foo def foo - puts "xoo!" + puts "foo!" + end +end + +class Bar + def bar + puts "bar!" end end
Com esse patch em mãos, abrimos o nosso arquivo foo.rb no Vim, e digitamos:
:diffpatch foo.patch
Olhem a mágica que acontece! Temos os dois arquivos abertos, assinalados onde estão as diferenças que podem ser aplicadas pelo patch. Podemos inclusive navegar pelas alterações usando ]c para ir para a o início da próxima alteração e [c para ir para o início da alteração anterior. Se você estiver na janela do novo arquivo criado com o código do patch aplicado e desejar aplicar a alteração que o cursor se encontra no arquivo original, digite, em Normal Mode, dp. Se for o inverso, ou seja, você estiver no arquivo original e quiser incorporar as mudanças do arquivo novo criado com o patch, digite do. O resultado final fica:
1 class Foo 2 def foo 3 puts "foo!" 4 end 5 end 6 7 class Bar 8 def bar 9 puts "bar!" 10 end 11 end
Uma dica é digitar :1,$+1diffget estando posicionado no arquivo original para incorporar todas as alterações feitas pelo patch e mostradas no arquivo novo. Happy patching and happy vimming! :-)
Tags:
Comentários
Comentários fechados.
Fantástico!!
Adicionado aos meus favoritos!
realmente muito boa a dica.
[]'s