Creando parches en Drupal

En ocasiones es necesario extender o corregir el funcionamiento de alguno de los módulos de terceros que completan una instalación del core de drupal, si nuestro código es suficientemente genérico como para incluirlo en el módulo original, podemos enviar un parche a la cola de issues.

Basándome en este post de la gente de NodeOne, y en la ayuda de jonhattan y manuee os dejo dos alternativas para generar parches en drupal, voy a usar el módulo views en su versión 3 como ejemplo, substituid nombre y versión por el que estéis parcheando.

Usando drush + cvs "de toda la vida"

  • drush dl views-6.x-3.x --package-handler=cvs
  • Integramos nuestros cambios en la versión de desarrollo del módulo.
  • cvs diff -u > nombre_del_parche.patch

Explicación: El comando drush nos descarga la última versión de desarrollo del módulo que estamos parcheando (si quereis poner otra, simplemente cambiad los numeros por los que salen en la página del proyecto). La opción --package-handler=cvs nos permite descargar la última versión de desarrollo que haya en el CVS de Drupal.

Con cvs diff generamos las diferencias entre lo que hemos integrado y el módulo en su última versión.

Usando drush + git porque nos sentimos más modernos

  • drush dl views-6.x-3.x --package-handler=cvs
  • cd views
  • git init
  • git add *
  • git commit -m "Initial version"
  • Integramos nuestros cambios en la versión de desarrollo
  • git diff > nombre_del_parche.patch

Explicación: git nos permite crear repositorios locales al vuelo, eso es lo que hacemos con git init, con los comandos add y commit consolidamos en nuestro repositorio local el proyecto que nos descargamos con drush. Al integrar nuestros cambios, git diff es capaz de diferenciar nuestros cambios de la versión original y generar el parche.

Podéis encontrar más detalles sobre el concepto de parches en la sesión "Parches y bugs, de que va todo eso?" que se realizó en la drupalcamp Spain 2010.

Comentarios

Cuando intento ejecutar:

drush dl views-6.x-3.x --package-handler=cvs

Me da el siguiente error:

Unable to checkout views from cvs.drupal.org.
Unable to check out views to /home/ramon/Escriptori/views from cvs.drupal.org
An error occurred at function : drush_pm_download

Olvídalo, era problema con mi sistema

<p>¿Qué versión de drush utilizas? Es un momento estupendo para actualizarte a la última&nbsp;</p><p>De todas maneras puedes hacer un drush dl de la ultima dev tambien, puedes mirar el nombre en la página del proyecto correspondiente :)</p>

Añadir nuevo comentario