Cómo hacer un cherry-pick sin descargar todo el histórico de un proyecto en GitHub

Categorías: Control de versiones Programación
Primero, el contexto: quería abrir este backport a OCB 9.0, pero había clonado así: $ git clone --depth 100 --branch 9.0 https://github.com/OCA/OCB.git El problema ahora es que para hacer cherry-pick del commit correspondiente en Odoo 10.0, hubiera necesitado mucho tiempo descargando todo ese árbol de código, que es considerablemente grande. Es por eso que usé un par de herramientas que nos dan git y GitHub para estos menesteres: En cuanto a GitHub, para cada commit o pull request, siempre podemos añadir a la URL:

Lee Mas →

Cómo usar autosquash en Git

Categorías: Control de versiones Programación
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.

Lee Mas →

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

Categorías: Control de versiones
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? Por qué sucede Si no hubiéramos clonado con --depth 100, la cosa funcionaría así:

Lee Mas →

Cómo actualizar un backport modificado con Git

Categorías: Control de versiones Programación
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.

Lee Mas →

Transferir código entre repositorios, con archivos renombrados

Categorías: Control de versiones Opinión Programación Tutoriales
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: En el repositorio Antiun/antiun-odoo-addons, el módulo fue creado como crm_department. Más tarde se renombró a crm_partner_department para evitar conflictos con un módulo llamado crm_department de la OCA. Ahora yo tenía que moverlo al repositorio OCA/partner-contact renombrándolo a partner_contact_department (aparte de otros cambios que no vienen a cuento).

Lee Mas →

Mercurial y Git pueden ser amigos

Categorías: Control de versiones Empaquetado de software Programación
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. Permite trabajar con Mercurial (y TortoiseHg, claro está) contra repositorios Git de forma casi transparente. Las ramas locales de Git se traducen a bookmarks de Mercurial (que, por cierto, no conocía, y es un método fantástico para trabajar), y las ramas remotas de Git se traducen a etiquetas locales de Mercurial (bueno, algo parecido).

Lee Mas →

Escogiendo control de versiones (bzr, git, hg)

Categorías: Control de versiones Opinión Programación
Es una elección difícil. Por suerte o por desgracia he usado los 3 últimamente, así que ahí van mis impresiones: Bazaar Empezaré por él porque es el que menos me ha gustado, y porque está muriendo, así que no lo recomendaría para proyectos nuevos. Está muy bien que viene muy integrado con su GUI Bazaar Explorer, que si bien no es la mejor, es más intuitiva que la línea de comandos.

Lee Mas →