Comment ajouter un contrôle de version à mon flux de travail?

11

Je développe des thèmes, beaucoup d'entre eux. On me donne un PSD, je code le code HTML / CSS, je claque le code dans Wordpress et j'apporte des corrections au fur et à mesure qu'ils obtiennent le QC. Une fois en ligne, les clients peuvent modifier les articles de blog comme d'habitude ou télécharger des photos à l'aide d'un plugin personnalisé.

Parfois, je dois apporter des modifications au thème ou au contenu de la page / publication, ce qui signifie que je les fais vivre ou que je dois télécharger et configurer le site dans un environnement de développement à approuver par le client. Je n'ai pas de sauvegarde, je n'ai pas de contrôle de version et je me rends compte que cela doit changer.

Git et Mercurial ont été suggérés, et je voudrais profiter de ces outils, mais je ne sais pas comment les intégrer dans un flux de travail.

Dois-je exiger toutes les modifications d'un site sur un serveur de développement, puis les diffuser en direct une fois approuvé? Et écrire des articles de blog? Il semble exagéré d'écrire des messages sur le développeur et de mettre les modifications en direct, mais comment puis-je synchroniser les bases de données si elles sont modifiées sur le site en direct? J'ai parcouru Internet. Des conseils seraient appréciés.

cfree
la source
Je pense que cela peut être considéré comme une question d'écosystème hors de portée. Voir ici pour une discussion en cours .
Chip Bennett
4
@ChipBennett Je ne suis pas d'accord. Les dépendances spécifiques de WordPress entre les thèmes, les plugins et la base de données et la façon dont elles affectent la pratique générale des développeurs sont les bienvenues.
fuxia
@toscho Je pourrais certainement en être convaincu; c'est pourquoi j'ai signalé la discussion Meta. :)
Chip Bennett

Réponses:

9

Tout d'abord, vous devez reconnaître qu'il existe deux flux de travail ici: le vôtre et votre client.

Votre workflow

  • Recevez PSD
  • Code HTML / CSS
  • Modèle WordPress de code
  • Déployer le thème sur le site WordPress en direct

Leur flux de travail

  • Concevoir les modifications requises et vous envoyer un e-mail
  • Écrire des articles
  • Télécharger des photos

Le problème

L'implémentation du contrôle de version ici n'a absolument rien à voir avec le flux de travail de vos clients. Il s'agit de garder une trace du code que vous utilisez pour le thème WordPress. Tous vos fichiers de thème, plugins personnalisés, etc. doivent être dans un système de contrôle de version (Git, Mercurial, Subversion, ou tout ce que vous choisissez d'utiliser).

Votre workflow devient alors:

  • Écrire du code
  • Valider les modifications du système de contrôle de version
  • Transférer les modifications au site de production
  • Récupérer les commentaires du client
  • Écrire du code
  • Valider les modifications
  • Écrire du code
  • Valider les modifications
  • Transférer les modifications au site de production

N'oubliez pas, il s'agit de maintenir un historique de contrôle de version pour votre code . Le code est quelque chose que vos clients ne devraient pas changer - et vous ne devriez jamais changer le code sur un site de production pendant qu'il est en production.

Mais les modifications apportées au contenu (publications, photos, etc.) n'entrent pas dans le cadre de votre système de contrôle de version. En d'autres termes, vous n'effectuez pas de modifications dans le développement, puis vous mettez la base de données en production. C'est une mauvaise pratique de développement. Si vous avez besoin que les bases de données dev et prod soient synchronisées, vous devez régulièrement extraire une sauvegarde de la zone de production et restaurer votre version locale à partir de cette sauvegarde.

Les changements de code vont du développement à la production.
Les changements de base de données passent de la production au développement.

EAMann
la source
Vous ne pouvez pas vraiment synchroniser facilement les bases de données à moins d'avoir un script spécial qui gère la façon dont les données de contenu sont stockées dans la base de données. C'est pourquoi vous séparez le code du contenu de votre flux de travail, l'alternative est d'utiliser un serveur intermédiaire ou d'essayer d'utiliser l'un des scripts de synchronisation db ou d'écrire le vôtre.
Wyck
@EAMann Excellente réponse, merci! La seule chose que j'ajouterais au flux de travail que vous avez décrit serait d'écrire du code, de valider les modifications, de pousser vers le site de développement, de récupérer les commentaires du client, ... Je n'avais pas considéré deux flux de travail distincts car régulièrement nous devrons changer le nous contenter pour les clients. Parfois, nous devrons mettre du HTML dans le contenu pour répondre aux demandes spéciales dans le contenu (styles spéciaux, etc.). Parfois, ils nécessitent l'approbation du client avant d'être mis en ligne, c'est pourquoi les bases de données doivent être synchronisées. Existe-t-il des meilleures pratiques pour ce type de configuration?
cfree
@Wyck Plutôt que de déposer du contenu à côté du thème, il est logique de séparer les deux processus. J'aime l'idée d'une zone de développement pour les thèmes et d'une zone de mise en scène pour le contenu indépendant des autres. Le seul problème que je vois est que les clients aiment voir à la fois le thème et le contenu (le site dans son intégralité; pages statiques) avant de le lancer en direct.
cfree
Il ne s'agit généralement pas de synchroniser les modifications de la base de données. Ce que je voulais dire, c'est que vous prenez un vidage de votre base de données de production et remplacez votre base de données de développement local par elle. Certes, vous pouvez l'automatiser avec un script ... mais vous ne le ferez probablement pas très souvent.
EAMann
3
Il n'y a pas encore, est-ce vraiment une épine du côté de WordPress mais pas spécifiquement un problème WordPress car de nombreux CMS ont ce problème, vous pouvez en lire plus ici wordpress.stackexchange.com/questions/119/… plus en profondeur, certains les scripts existent, mais la plupart d'entre eux sont en interne car ils sont spécifiques à un certain environnement.
Wyck
1

Vous pouvez utiliser un logiciel qui synchronise les bases de données. Mais il y a aussi la possibilité de versionner les données elles-mêmes avec quelque chose comme http://chronicdb.com

Gary
la source
Cela semble intéressant; peut résoudre un certain nombre de problèmes. Je vais vérifier cela, merci.
cfree
1

Je viens de rédiger une réponse complète à cela sur une autre question. Personnellement j'utilise git et c'est fantastique. Pour commencer, je vous recommande de consulter les sites http://gitref.org/ et http://help.github.com/mac-set-up-git/ . Si vous êtes du type livre, j'ai lu celui-ci et ça vaut vraiment le prix de 22 $ pour un livre numérique. Faites-le, vous ne regretterez pas cette décision.

Matthew Boynes
la source
Merci, je vais devoir y revenir. La configuration de la base de données maître / esclave semble intéressante. Merci pour les conseils
cfree