drupal drush – ¿Posibilidad de aplicar un parche a un directorio de destino con Drush make?

Pregunta:

¿Hay alguna forma de declarar el directorio de destino para un parche en un archivo de creación de Drush?

Necesito aplicar un parche a una subcarpeta de un módulo. La razón es que el proyecto de CiviCRM está compuesto por múltiples repositorios (el parche es del repositorio civicrm-drupal, que corresponde a civicrm/drupal en el módulo empaquetado).

Había una propuesta en este sentido en # 745224 , pero en última instancia, solo se -p0 soporte para los parches de tipo -p0 y -p1 .

(Ahora estoy usando una solución al declarar una biblioteca en esa ubicación y aplicarle un parche, pero una forma más limpia sería buena).

Respuesta:

Después de aclarar que el objetivo de la pregunta original era poder usar parches generados por solicitudes de extracción en GitHub directamente, sugiero una respuesta alternativa. Mi respuesta original es correcta si el objetivo es empaquetar esto en Drupal.org. Debido a que drupal-org.make requiere que se encuentren parches en Drupal.org, la ruta se puede actualizar en el parche a los directorios de destino dentro del proyecto CiviCRM. drupal-org.make también requiere que todos los proyectos externos estén incluidos en la lista blanca. Solo la compilación sk (starterkit) de CiviCRM está incluida en la lista blanca ( https://www.drupal.org/node/1588192 ) debido al tamaño y los límites de licencia.

Al usar drush make localmente, puede usar tanto parches como código de cualquier fuente.

¿IIRC fue un poco más complicado que simplemente combinar los repositorios?

Realmente no es más complicado que simplemente combinar los repositorios. Hay algo de lógica adicional en https://github.com/civicrm/civicrm-core/blob/master/tools/scripts/releaser/releaser yhttps://github.com/civicrm/civicrm-core/blob/master/ distmaker / distmaker.sh , pero realmente puedes concentrarte en lo que sucede en …

https://github.com/civicrm/civicrm-core/blob/master/distmaker/dists/drupal_php5.sh

dm_install_core "$SRC" "$TRG" 
dm_install_packages "$SRC/packages" "$TRG/packages" 
dm_install_drupal "$SRC/drupal" "$TRG/drupal"

Eso combina https://github.com/civicrm/civicrm-core con https://github.com/civicrm/civicrm-drupal y https://github.com/civicrm/civicrm-packages .

Aparte del control de versiones, eso es realmente todo lo que sucede cuando se empaqueta una nueva versión de CiviCRM. No hay ningún código para una versión de D7 que no provenga de esos 3 repositorios. Al agregar cada uno de estos proyectos directamente, la ruta relativa del código coincidirá con lo que espera el parche, lo que permite que el parche se aplique en el .make.

Entonces, para que algo como https://github.com/civicrm/civicrm-drupal/pull/144.patch funcione antes de que se fusione en una versión, su .make se vería algo así como …

libraries[civicrm][download][type] = get
libraries[civicrm][download][url] = "https://github.com/civicrm/civicrm-core/archive/4.4.10.zip"
libraries[civicrm][destination] = "modules/"
libraries[civicrm][directory_name] = civicrm 

libraries[civicrm-drupal][download][type] = get
libraries[civicrm-drupal][download][url] = "https://github.com/civicrm/civicrm-drupal/archive/7.x-4.5.4.zip"
libraries[civicrm-drupal][destination] = "modules/civicrm/"
libraries[civicrm-drupal][directory_name] = drupal
libraries[civicrm-drupal][patch][144] = https://github.com/civicrm/civicrm-drupal/pull/144.patch

libraries[civicrm-drupal][download][type] = get
libraries[civicrm-drupal][download][url] = "https://github.com/civicrm/civicrm-packages/archive/4.5.3.zip"
libraries[civicrm-drupal][destination] = "modules/civicrm/"
libraries[civicrm-drupal][directory_name] = packages

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım