Cómo usar autosquash en Git

Cuando uno trabaja en una rama de desarrollo con git, es bastante habitual que haya que cambiar multitud de detalles hasta que se mezcla en la rama principal. A veces lo que estás desarrollando incluye varios commits lógicos, pero se acaban diluyendo entre multitud de “quitar basura”, “wip”, “typo”, “PR review”, etc.

Para que luego se quede el historial limpio, normalmente se hará un rebase manual, pero en tales circunstancias es un rollo.

Para evitar tener que hacer estas cosas, podemos hacer cualquiera de estos 2 comandos:

$ git commit --all --fixup $COMMIT
$ git commit --all --squash $COMMIT

El primero marcará el nuevo commit como para desaparecer y mezclarse con $COMMIT (ante las dudas, COMMIT=HEAD). El segundo hará lo mismo, pero en modo squash, es decir que mezclará no solo el código que ha cambiado sino el mensaje del commit (salvo la primera línea).

Cuando haya que hacer el squash final:

$ git rebase -i --autosquash

Y los commits que hayas marcado previamente te aparecerán en orden y ya premarcados con la acción correspondiente.

También puedes hacer este comportamiento el por defecto de rebase:

$ git config --global rebase.autoSquash true
Anuncios

Cómo añadir ramas remotas en git si clonaste con –depth o –single-branch

Supongamos que tengo un repo gigantesco y quiero descargar solo 100 commits para clonar más rápido:

$ git clone --branch 9.0 --depth 100 https://github.com/odoo/odoo.git

Guay, pero ahora necesito 100 commits de la rama 10.0 también para poder cambiar a ella. Normalmente haría:

$ git fetch --depth 100 origin 10.0
$ git checkout 10.0

Pero me encuentro con que el checkout no funciona como era de esperar… ¿Qué hago?

Continúa leyendo Cómo añadir ramas remotas en git si clonaste con –depth o –single-branch

Cómo actualizar un backport modificado con Git

Bueno, esta tarea es bastante compleja, y no se me ocurren muchos ejemplos teóricos, así que vamos con un caso real.

Como muchos sabréis, soy miembro activo de la OCA y un contribuyente habitual a Odoo.

Una de las novedades de Odoo 9.0 fue el módulo website_slides, que fue backporteado por la comunidad a Odoo 8.0.

Sin embargo, desde que se realizó el backport hasta el día de hoy, el módulo ha recibido varios parches upstream 9.0 que la versión backporteada no tenía, así que lo que quiero es actualizarlo, sin perder el historial de Git.

Continúa leyendo Cómo actualizar un backport modificado con Git

Transferir código entre repositorios, con archivos renombrados

Recientemente tuve que hacer una transferencia de código fuente algo complicada. Tenía que transferir un addon de Odoo desde un repositorio a otro completamente diferente:

Veamos cómo se puede hacer con Git y con Mercurial.

Continúa leyendo Transferir código entre repositorios, con archivos renombrados

Convierte tu tableta Android en un puesto de trabajo

Si trabajas como hacker, programador y/o administrador de sistemas, agradecerás tener a mano en tu tableta un kit básico con las 4 herramientas clave que uses a diario, que además son libres:

Continúa leyendo Convierte tu tableta Android en un puesto de trabajo

Los dogmas de Windows y por qué lo odio

Es bastante habitual que la gente que me conoce me hable de temas informáticos y acabe surgiendo mi odio a Windows en algún momento, y me pregunten el por qué.

Básicamente, el uso de Windows nos ha implantado dogmas que uno acepta sin más, pero que en realidad no tienen sentido. Veamos algunos.

Continúa leyendo Los dogmas de Windows y por qué lo odio

Cómo juguetear con Linux y no morir en el intento

Conozco gente a quien le encanta Linux, pero que siempre está reinstalándolo porque se lo ha cargado intentando hacer algo que no sabía muy bien cómo hacer. Quizá un manazas que se cree está aprendiendo a ser un manitas, o quizá simplemente le guste hackear cosas. Aquí va una breve guía para quienes están en esa situación (y empiezan a hartarse).

Continúa leyendo Cómo juguetear con Linux y no morir en el intento

Mercurial y Git pueden ser amigos

Si eres como yo, que me gusta Mercurial por encima de todos los demás VCS que he probado, pero te ves obligado a trabajar con Git muchas veces porque, aceptémoslo, es el más popular de todos, hay una herramienta que te hará feliz: Hg-Git.

Continúa leyendo Mercurial y Git pueden ser amigos