GESTIĆN DE PARCHES CON GIT
1. Creación del parche.
AdemĆ”s quizĆ”s no necesitamos hacer un merge completo sino aplicar un commit en especifico, si tenemos derecho de escritura en ambos branches podrĆamos hacer uso del git cherry-pick como se muestra a continuación.
1
2
| git checkout mastergit cherry-pick b0429c202bafde0bae7439d4ce70480b1b5604b3 |
En el ejemplo anterior se utiliza la llave SHA-1 que se le asigna a cada commit.
Sin embargo esto no soluciona el problema de que no tengamos derechos de escritura en el branch de destino. Para esto creamos un parche utilizando el comando format-patch como se puede apreciar en el siguiente comando:
1
2
3
| git format-patch -1 e99b2cd8bafc5efc9d9b353d6fb5530e61a8c3ae0001-Lmessages-theming.patch |
En anterior comando tomara todo los cambios y generara un archivo cuyo nombre sera el comentario del commit.
Ahora bien si tenemos 99 commits y deseamos aplicar todo a master tenemos dos opciones.
1.1 Crear un patch por cada commit.
1
2
3
4
| git format-patch master0001-site_name-variable.patch0002-wizard-and-preview.patch |
Se aumentara el numero de consecutivo desde 0001 hasta llegar al ultimo en nuestro ejemplo a 0099-message-commit.patch
2.1 Crear un solo patch para todos los commits
1
| git format-patch master --stdout > fix_master.patch |
De esta forma en el archivo fix_master estarĆan todos los cambios.
2. Aplicar el parche.
Con el parche en nuestras manos y posicionados en el branch que deseamos aplicar el parche por ejemplo master debemos hacer algunas revisiones.
Primero verificar que archivos se van a modificar, para esto debemos obtener alguna estadĆsticas como se muestra a continuación.
1
2
3
4
5
6
| git apply --stat fix_master.patch .../sites/default/themes/fancy/css/fancy.css | 14 +++++++++ .../sites/default/themes/fancy/js/main.js | 31 ++++++++++++++++++++ .../sites/default/themes/fancy/sass/fancy.sass | 14 +++++++++ .../sites/default/themes/fancy/templates/page.tpl.php | 2 + 4 files changed, 60 insertions(+), 1 deletion(-) |
Si estamos seguros de que los cambios son los deseados debemos verificar que todos los cambios se aplicaran correctamente, esto porque quizƔs entre que se creo el parche y el estado actual las lineas de referencia en el archivo de destino utilizadas para aplicar el cambio hayan cambiado, esto lo hacemos con el siguiente comando.
1
2
| git apply --check 0001-LM-messages-theming.patcherror: patch failed: .../sites/default/themes/fancy/template.php:4 |
Si la salida en vacĆa significa que se aplicara sin problemas y si es similar al ejemplo anterior nos indicara donde esta el problema, para lo cual tendremos dos opciones generar de nuevo el parche o ajustar el parche para remover las lineas erróneas.











