web-dev-qa-db-fra.com

Flux de travail Git pour les projets basés sur Composer

Je voudrais installer/gérer Drupal avec Git, Drush et la synchronisation de configuration.

Dois-je ajouter core/ et vendor/ dans le .gitignore pour qu'au lieu de pousser/tirer le noyau, je mette simplement à jour le noyau sur prod/dev et synchronise la configuration uniquement?

De cette façon, je pourrais potentiellement gérer un site Drupal avec quelques référentiels:

  • Référentiel pour les configurations
  • Référentiel pour un thème personnalisé
  • Référentiel pour les modules personnalisés

Lors de la mise à jour d'un module, ce serait mon flux de travail.

Sur le développement

  1. git pull
  2. drush up
  3. drush config-export to-prod
  4. git Push

En production

  1. git pull
  2. drush up
  3. drush config-import to-prod

Je demande parce que cela ne semble pas logique que je doive pousser/tirer tout Drupal 8 avec chaque mise à jour.

3
ymdahi

Si votre objectif est de réduire la taille de votre référentiel, vous devez utiliser Composer, en suivant le modèle décrit dans le projet drupal-composer/drupal-project .

Un workflow possible serait alors:

Sur dev:

  1. git pull
  2. installation du compositeur
  3. drush config-export
  4. git add/commit/Push

Sur scène:

  1. git pull
  2. installation du compositeur
  3. drush config-import

En direct:

  1. rsync de la scène au live
  2. drush config-import

Le workflow que vous proposez ne fonctionnera pas. La commande drush pm-update ne fera rien si Drupal est déjà à la version la plus récente. drush pm-download n'est pas non plus une bonne alternative, car il écrasera des parties de votre base de code. Vous pouvez potentiellement réparer cela avec un git reset --hard ou une astuce similaire, mais ce ne serait pas très propre.

Si vous ne souhaitez pas utiliser Composer, votre meilleure option est de simplement valider les répertoires principal et fournisseur.

7
greg_1_anderson

Je demande parce que cela ne semble pas logique que je doive pousser/tirer tout Drupal 8 avec chaque mise à jour.

L'intérêt de Git est qu'il est incrémentiel. Il ne fait que tirer et pousser ce qui a changé, les différences.

Si vous modifiez un fichier, il suffit d'envoyer les différences. C'est ce qui est stocké dans un commit. Pas encore le fichier complet.

2
rovr138