GIT Workflow (Parte 1)

Acabo de leer un artículo creado por los trabajadores de Github que han dado una vuelta de tuerca a lo que sabía de GIT y creo que será muy útil compartirlo, pero primero vamos por partes:

Control de Versiones

Prefiero empezar por lo más básico porque ésto es algo que los programadores damos por hecho pero para alguien empezando puede ser totalmente desconocido. Una de las herramientas más básicas de un programador junto con el editor de texto es un sistema de control de versiones. Se trata básicamente de un programa que registra los cambios que vamos haciendo en los archivos y cuando nosotros se lo ordenamos (hacemos commit) se guarda el estado actual de los archivos, si más adelante seguimos haciendo cambio en los archivos y en lugar de mejorar empeora gracias al sistema de control de versiones podemos revertir los archivos y dejarlos tal y como estaban en el último commit o cualquier commit anterior. Además permite que dos o más personas puedan archivos de un mismo proyecto y cuando ambos envíen sus cambios el sistema hará lo posible por combinarlos (hacer merge), en caso de que el merge no se pueda hacer automático el sistema notifica un conflicto de cambios y nos pide que lo hagamos a mano.

GIT

Después de usar SVN y TFS y SourceSafe en los cuales hacer merge era dramático o bien imposible (en SourceSafe dos personas no pueden modificar el mismo archivo a la vez), descubrir GIT fue fascinante, la eficacia con la que resuelve conflictos y la capacidad de crear, combinar y destruir ramas con un simple comando es una herramienta invaluable. El principal problema con las grandes herramientas es que hay tantas formas de usarlas que si no sabes lo que haces probablemente te encuentres en un caos y esa es la sensación que tuve al dar mis primeros pasos con GIT, estar gastando tiempo y esfuerzo en usar una herramienta compleja sin conseguir exprimirle el jugo.

GIT Flow

Finalmente me crucé con GIT Flow, una guía para aprovechar el potencial de GIT en el ámbito laboral. La idea es bastante sencilla pero las directrices deben ser respetadas para garantizar el orden:

  • Mantener en la rama master una versión del código lista para ser utilizada (production-ready)
  • Mantener en la rama develop las nuevas funcionalidades completas de nuestra aplicación, esperando a que podamos lanzar otra versión estable (release)
  • Las nuevas funcionalidades se desarrollan en ramas creadas a partir de la rama develop y una vez completadas se “mergean” a develop
  • Cuando develop esté listo para una nueva release se abre una rama y se hace la fase final de testing y los cambios de versión. Una vez completada ésta fase la rama de release se “mergea” a develop y master y se añade un tag en master para marcar la release.
  • Los bugs se arreglan en ramas creadas a partir de master y una vez corregidos igual que una rama de release se se actualiza la versión y se “mergea” a master y develop y se añade un tag en master

Para una explicación más detallada recomiendo leer el artículo original (inglés) ya que lo explica mucho mejor de lo que yo podría. Cada una de éstas operaciones está compuesta de varios comandos git que deben ser ejecutados en un orden dado y es muy común olvidar algún paso, principalmente al empezar con el Workflow, por ello disponemos de git-flow, una herramienta que añade comandos a git. Una vez instalado podremos ejecutar comandos como:

git flow feature start my-feature-name

Que gestionará por nosotros la creación de la rama a partir de develop. Podemos ver una introducción a git-flow en el artículo Why aren’t you using git-flow? (ingĺés). Aunque no sobra decir que en el caso de las interfaces gráficas de GIT hay que seguir los pasos manualmente.

Personalmente creo que éste sistema es bueno si tenemos GIT y no tenemos claro que Workflow seguir. Es un sistema muy extendido entre los usuarios de GIT lo que permite que la gente se adapte rápidamente y lo considero un punto medio entre complejidad y simpleza. Hay una variante para proyectos que necesitan mantener más de una versión (es decir, la mayoría de los productos que se venden como paquete cerrado) en ésta variante en lugar de poner un tag en master por versión creamos una nueva rama, por ejemplo “release-1.4”, de ésta forma disponemos de distintas ramas para cada versión. Ésto nos permite corregir un bug en una versión pasada y sacar un parche específico.

El proceso al detectar un bug en la última release es probar las releases anteriores hasta detectar la release en la que se introdujo el bug. Por ejemplo, estamos en la versión 1.8 pero detectamos un bug que afecta a nuestro producto desde la versión 1.2. En ese caso corregimos el bug en una rama creada a partir de la rama de la primera versión que contiene el bug, y una vez corregido se envía a cada rama de release que contenga el bug. Evidentemente se trata de un Workflow mucho más costoso que no debe ser utilizado a menos que tengamos la necesidad de mantener más de una versión del producto que por mi experiencia considero una mala práctica, pero si nos encontramos en ésta situación nos puede reducir los problemas y ahorrar mucho tiempo. Continúa en la segunda parte

366 thoughts on “GIT Workflow (Parte 1)

  1. Dysport是A型肉毒桿菌素,為英國一所受嚴格監管的藥廠內透過高科技純化程序提煉的蛋白質。 Dysport更獲美國食品及藥物管理局FDA核准用於美容用途,肯定其效果及安全性。其能有效阻隔神經訊息傳達,令肌肉不受神經控制,減退因肌肉而過度收縮引致的面部動態性皺紋及放鬆過度活躍的肌肉,以達到瘦面、瘦小腿效果;亦能抑制汗腺掛汗的神經系統,有效減少汗水分泌,達到止汗​​及減少異味。Dysport 瘦面 溶脂 Dysport注射到咬肌內,抑制神經肌接頭處乙酰膽鹼遞質的傳遞,使咬肌張力變小而達到瘦臉效果。

  2. Hey there just wanted to give you a quick heads up.
    The words in your content seem to be running off the screen in Safari.
    I’m not sure if this is a formatting issue or something
    to do with web browser compatibility but I thought
    I’d post to let you know. The layout look great though!
    Hope you get the problem fixed soon. Kudos

  3. Hi, I do think this is a great blog. I stumbledupon it 😉 I’m going to revisit once again since I bookmarked it.

    Money and freedom is the best way to change, may you be rich and continue to guide others.

  4. Howdy! This article couldn’t be written much better!
    Going through this post reminds me of my previous roommate!
    He continually kept talking about this. I will forward this information to him.

    Fairly certain he’s going to have a good read. Thank you
    for sharing!

  5. It is appropriate time to make some plans for the future and it’s time to be
    happy. I have read this post and if I could I wish to suggest
    you some interesting things or advice. Maybe you
    could write next articles referring to this article.
    I wish to read more things about it!

  6. Its like you read my thoughts! You appear
    to understand so much about this, like you wrote the book in it
    or something. I believe that you can do with some % to drive the message
    house a bit, however other than that, that is magnificent blog.
    An excellent read. I will certainly be back.

  7. It is appropriate time to make some plans for the future and it’s
    time to be happy. I have read this post and if I
    could I wish to suggest you some interesting things or tips.
    Maybe you can write next articles referring to this article.
    I want to read even more things about it!

  8. According to my observation, after a property foreclosure home is offered at an auction, it is common for your borrower in order to still have some sort ofthat remaining unpaid debt on the mortgage loan. There are many financial institutions who make an effort to have all rates and liens cleared by the subsequent buyer. Even so, depending on specific programs, restrictions, and state laws there may be several loans that aren’t easily fixed through the transfer of lending options. Therefore, the duty still rests on the consumer that has acquired his or her property in foreclosure. Thanks for sharing your opinions on this blog site.

  9. Hello! I could have sworn I’ve been to this web site before but after
    looking at a few of the posts I realized it’s new to me.

    Nonetheless, I’m definitely pleased I came across it and I’ll be book-marking
    it and checking back regularly!

  10. It is the best time to make some plans for the future and it is time
    to be happy. I have read this post and if I could I wish
    to suggest you few interesting things or suggestions.
    Perhaps you can write next articles referring to this article.
    I wish to read more things about it!

  11. Hello would you mind letting me know which hosting company you’re working with?
    I’ve loaded your blog in 3 different internet browsers and I must say
    this blog loads a lot quicker then most. Can you recommend a good hosting provider at a honest
    price? Thanks, I appreciate it!

  12. I have been browsing on-line more than three hours lately, but I by no means discovered
    any interesting article like yours. It’s pretty price enough for me.
    In my view, if all webmasters and bloggers made good content material as you probably did, the web can be a lot more helpful than ever
    before.

  13. Hey there would you mind letting me know which web host you’re using?
    I’ve loaded your blog in 3 completely different
    web browsers and I must say this blog loads a lot quicker then most.
    Can you recommend a good internet hosting provider at a fair price?
    Kudos, I appreciate it!

  14. Hi would you mind letting me know which web host you’re
    using? I’ve loaded your blog in 3 different browsers and I must say this blog loads a lot faster
    then most. Can you recommend a good hosting provider at a reasonable price?
    Kudos, I appreciate it!

  15. I have been browsing online more than three hours today, yet I never found any interesting article like
    yours. It’s pretty worth enough for me.
    In my view, if all website owners and bloggers made good content as you did,
    the net will be a lot more useful than ever before.

  16. It’s the best time to make some plans for the longer
    term and it is time to be happy. I’ve learn this publish and if I may just I want to recommend you few interesting issues or advice.
    Perhaps you can write next articles referring to this article.

    I desire to read even more issues about it!

  17. Rafa Benitez endured the worst 45 minutes of his Liverpool career on Tuesday night but insisted his side would bounce back from their humiliating 2-0 defeat at Fiorentina. Blown away! Boy wonder Stevan Jovetic strikes twice to sink Liverpool – but Rafa Benitez vows to bounce back at Chelsea

  18. It is perfect time to make some plans for the future and
    it’s time to be happy. I’ve read this post and if I could I
    wish to suggest you few interesting things or advice.

    Maybe you can write next articles referring to this article.
    I desire to read even more things about it!

  19. [url=http://baclofenbest.us.org/]baclofen tablets[/url] [url=http://xenicalgenericbuy.com/]xenical 120 mg for sale[/url] [url=http://acyclovirgenericbuy.com/]acyclovir[/url] [url=http://allopurinolgenericbuy.com/]order allopurinol[/url] [url=http://propranolol.in.net/]propranolol online[/url] [url=http://buysuhagra.us.org/]Buy Suhagra[/url] [url=http://avodartbest.us.com/]generic for avodart 0.5 mg[/url] [url=http://buymobic.us.com/]buy mobic[/url] [url=http://buymetformin.us.com/]Buy Metformin[/url] [url=http://buypropecia.us.com/]propecia[/url]

  20. [url=http://prednisonegenericonline.com/]steroids prednisone for sale[/url] [url=http://amoxicillin500.top/]where can i buy amoxicillin without prec[/url] [url=http://doxycyclinegenericbuy.com/]Doxycycline For Sale[/url] [url=http://cleocingel.us.com/]cleocin[/url] [url=http://flagylbest.us.org/]flagyl generic[/url]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *