33 votes

Stratégie de contrôle de source Drupal?

Dans le standard de php ou de code source en fonction des projets, nous avons facilement garder tout le code dans le SVN et chaque développeur peut checkout leur propre copie et de collaborer sur le même code.

Lors du développement d'un site Drupal cependant, une grande partie du travail est dans les "paramètres". En dehors du thème et des modules que vous n'avez pas vraiment de "code source". Comment exécuter plusieurs instances d'un même site afin que les développeurs peuvent tous travailler dans le même temps pourtant de partager leur travail?

Exemple De Scénario:

Nous lançons une première version d'un site Drupal avec un type de contenu "X" créé. Nous avons également abord lancer un affichage sur le site qui répertorie tous les nœuds de type "X" dans l'ordre chronologique. Le client commence à utiliser le site, d'ajouter du contenu, des éléments de menu etc.

La prochaine sortie est prévue pour ajouter la capacité de recherche de ce point de vue. Le programme d'installation pour qui est contenue dans la base de données si. Nous pouvons copier la base de données de production pour notre version de développement pour obtenir les données les plus récentes, tandis que nous travaillons sur la modification de la vue. Pendant ce temps, toutefois, le client peut toujours être mise à jour du site, ce qui rend notre dev base de données de synchronisation. Lorsque nous sommes prêts à pousser la nouvelle vue à la production, est-il un moyen plus facile de le faire par d'autres que manuellement répétez les étapes pour le mettre en place sur la production de l'installation?

12voto

Stewart Robinson Points 1062

Je pense qu'une bonne stratégie consiste à utiliser installer le profil de l'API. Avec installez le profil de l'API, vous pouvez faire la plupart des choses que l'utilisation de Drupal outils d'administration de le faire. L'essentiel des formes tout simplement définir des variables dans le tableau variables. Pour être en mesure de raisonnablement version de votre base de données de contenu contenu c'est à dire la configuration, il est sage d'utiliser les fonctions de mise à jour.

Sur mon site, nous avons sur le module "ec" qui ne fait que très peu à l'écart à partir de ce.installer fichier contient des fonctions de mise à jour par exemple ec_update_6001()

Votre installation principale fonction peut prendre soin de réellement exécuter les mises à jour sur toutes les nouvelles installations que vous apportez à apporter vos modules jusqu'à ce jour.

function ec_install() {
  $ret = array();
  $num = 0;
  while (1) {
   $version = 6000 + $num;
   $funcname = 'ec_update_' . $version;
   if (function_exists($funcname)) {
     $ret[] = $funcname();
     $num++;
   } else {
     break;
   }
  }
return $ret;
}

Un exemple de fonction de mise à jour ou deux à partir de notre fichier de suivre maintenant

// Create editor role and set permissions for comment module
function ec_update_6000() {
  install_include(array('user'));
  $editor_rid = install_add_role('editor');
  install_add_permissions(DRUPAL_ANONYMOUS_RID, array('access comments'));
  install_add_permissions(DRUPAL_AUTHENTICATED_RID, array('access comments', 'post comments', 'post comments without approval'));
  install_add_permissions($editor_rid, array('administer comments', 'administer nodes'));
  return array();
}
// Enable the pirc theme.
function ec_update_6001() {
  install_include(array('system'));
  // TODO: line below is not working due to a bug in Install Profile API. See http://drupal.org/node/316789.
  install_enable_theme('pirc');
  return array();
}

// Add the content types for article and mtblog
function ec_update_6002() {
  install_include(array('node'));
  $props = array(
    'description' => 'Historical Movable Type blog entries',
  );
  install_create_content_type('mtblog', 'MT Blog entry', $props);
  $props = array(
    'description' => 'Article',
  );
install_create_content_type('article', 'Article', $props);
return array();
}

Effectivement la plupart du temps cela résout le problème de contrôle de version avec les bases de données et Drupal code. Nous utilisons intensivement. Il nous permet de promouvoir le nouveau code qui change de configuration de base de données sans avoir à les réimporter la base de données ou de faire vivre des changements. Cela signifie également que nous puissions bien des versions de test, sans crainte de la base de données caché changements.

Enfin cck et views soutenir cette approche. Voir cet extrait de code

// Enable CCK modules, add CCK types for Articles in prep for first stage of migration,
// enable body for article, enable migration modules.
function ec_update_6023() {
  $ret = array();
  drupal_install_modules(array('content', 'content_copy', 'text', 'number', 'optionwidgets'));
  install_include(array('content', 'content_copy'));
  install_content_copy_import_from_file(drupal_get_path('module', 'ec') . '/' . 'article.type', 'article');
  $sql = "UPDATE {node_type} SET body_label='Body', has_body=1
  WHERE type = 'article'";
  $ret[] = update_sql($sql);
  return $ret;
}

11voto

Nick Sergeant Points 3792

J'ai écrit un article sur indolore Drupal de contrôle de révision avec CVS et Subversion des pratiques exemplaires il y a un moment.

Malheureusement, il existe encore la question de la source de contrôle de la base de données, comme vous l'avez souligné. Il existe quelques méthodes suggérées, qui je le mentionne dans un post supplémentaire.

7voto

mirzu Points 1652

La prise de Drupal paramètres de la base de données en code a été d'avancer à pas de géant. Deux modules qui aide vraiment dans ce domaine sont:

Caractéristiques : Permet de rassembler des entités telles que les types de contenu, de la taxonomie, de vues, de même flux. Nous sommes à l'aide de ce avec beaucoup de succès et il est possible de partager ces changements entre les développeurs.

Strongarm - Permet le stockage et l'exportation de la variable à l'aide de la au-dessus du module. J'ai fait quelques tests avec ce module, mais nous ne sommes pas à l'utiliser, simple, parce que nous n'avons vraiment pas besoin de la fonctionnalité.

Ces résoudre les plus grands problèmes avec le maintien de la configuration du site dans la base de données. Ils ne sont pas parfait cependant. . . nous avons trouvé les modules qui ont été ou non pris en charge pris en charge de manière incorrecte.

1voto

alastairs Points 3281

Vous pourriez vous épargner un peu de la douleur de la configuration et de travail avec SVN, comme décrit dans le Nick de l'article si vous utilisez la propriété svn:externals de la propriété. Cela permet de garder votre version locale de Drupal à jour avec l'Drupal branche automatiquement, et vous pouvez utiliser exactement le même mécanisme pour vos modules. En outre, parce que SVN va lire les définitions externes à partir d'un fichier, vous pouvez mettre ces sous contrôle de version trop!

Je ne pense pas que CVS dispose d'une fonctionnalité équivalente. Cependant, il est assez facile d'écrire un script simple qui va automatiquement installer un module Drupal, en prenant simplement une URL (ce que j'ai fait pour garder mon propre site Drupal jusqu'à ce jour).

Aussi loin que le contrôle de version de la base de données est concerné, c'est beaucoup plus délicat problème à résoudre. Je suggère de l'exportation d'un "stock" de Drupal de base de données à un fichier SQL et la mise sous contrôle de version. Chaque promoteur leurs propres locaux privés serveur de base de données à utiliser. Vous pouvez ensuite fournir un script qui permettrait de revenir à une base de données spécifiée pour votre stock de la version contenue dans le fichier SQL.

Comme un exemple de la façon dont ce problème est résolu par d'autres moyens, je vais décrire la situation au travail. Je travaille sur une application web; il n'utilise pas une base de données afin de ne pas subir ces problèmes. Notre façon de se déplacer à la répétition de l'installation de sites est à reconstruire à partir de la source de contrôle et de fournir un programme pour réaliser le déploiement automatique des sites. Le programme est utilisé par nos clients, leur mode de création de sites.

1voto

haggai_e Points 2143

Certains modules tels que CCK et Vues permettent d'exporter et d'importer leurs données de configuration sous forme de texte. Vous pouvez enregistrer ces représentations textuelles sous le système de contrôle de source.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X