Publicidad

miércoles, 8 de julio de 2020

Crear Parches con Github / Gitlab

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 master
git 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 e99b2cd8bafc5efc9d9b353d6fb5530e61a8c3ae
0001-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 master
0001-site_name-variable.patch
0002-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.patch
error: 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.

0 comentarios:

Publicar un comentario