Git: aplique patches ao código que é movido

Às vezes, enfrentamos a situação de corrigir bugs em versões mais antigas de nossos aplicativos. Essas correções também devem ser aplicadas a outras versões, mas alguns códigos são movidos para outros diretórios ou podem ser extraídos em uma única biblioteca.

Novamente, com o Git isso não é tão difícil. A combinação de Git e um editor de texto funciona bem para mim, mas talvez haja outra solução. Se você tiver um, sinta-se à vontade para compartilhá-lo na seção de comentários.

OK. Digamos que corrigimos um bug em foo.coffee e isso também deve ser incluído em outra versão. Criar um patch é a primeira etapa:

git diff HEAD~1 -- app/assets/javascripts/foo.coffee > fix_sorting_foo.patch

Abra seu editor de texto e abra o patch. Estou apaixonada por Sublime Text, é muito fácil fazer algumas coisas de substituição que temos que fazer na etapa 2:

diff --git a/app/assets/javascripts/foo.coffee b/app/assets/javascripts/foo.coffee
index
99a49a7..647456d 100644
--- a/app/assets/javascripts/foo.coffee
+++ b/app/assets/javascripts/foo.coffee

O patch deve ser aplicado a vendor/assets/javascripts/foo.coffee, portanto, substitua todas as ocorrências de apppor vendor.

(Para Sublime: coloque o cursor na frente do aplicativo e pressione cmd + g, depois digite vendor).

A última etapa é aplicar o patch:

git apply --stat fix_sorting_foo.patch # check what will be changed
git apply
--check fix_sorting_foo.patch # check if it will apply
git apply fix_sorting_foo
.patch

Feito. Feliz patching.