Drupal Subversion Repository
Transmachina a construit et maintient un certain nombre de sites Web basés sur Drupal. En raison de la très active communauté, mises à jour à la fois le code du noyau Drupal et les modules sont livrés fréquemment et peut prendre beaucoup de temps pour garder une installation Drupal mise à jour et sécurisé. En conséquence, Transmachina a développé un référentiel subversion pour le suivi des rejets Drupal et ont décidé de faire cette ouverture à la communauté open source. Le référentiel est disponible à l'adresse http://svn-drupal.transmachina.net/ et peut être lu avec un accès anonyme. Actuellement, toutes les mises à jour sont effectuées par le personnel Transmachina, mais nous serions intéressés par des bénévoles dans la communauté pour aider à ce processus. /admin / logs / statut ou en regardant dans / modules / drupal / drupal.info sur la ligne commençant par "version ="
Ce que nous faisons
Chaque fois une nouvelle version de Drupal est fait, on télécharge la source et d'utiliser le script de la subversion svn_load_dirs mettre à jour notre code de 5.x "actuelle" libération de cette nouvelle version. Le script ajoute automatiquement de nouveaux fichiers, supprime ceux abandonnés et mises à jour tous les fichiers existants. Le «diff» est stocké dans la subversion d'une manière efficace. L'utilisation d'un outil tel que TortoiseSVN vous pouvez rapidement voir un aperçu des changements effectués au cours de chaque nouvelle version. Nous avons également ajouter une copie du communiqué de l'ensemble dans / trunk/drupal/5.10 par exemple.Comment puis-je l'utiliser?
Démarrer un nouveau projet Drupal
- Exportez la dernière version du référentiel, svn export http://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal (cela va créer un dossier local "mydrupal" qui vous modifiez localement.
- Ajouter le dossier mydrupal dans votre système de contrôle de version (tout devrait fonctionner), par exemple svn add mydrupal puis svn commit mydrupal-m "Ajout de nouveaux frais d'installation pour drupal myproject"
- Vous pouvez maintenant installer de nouveaux modules, et même apporter des modifications aux principales fichiers drupal (vous devriez savoir ce que vous faites lorsque vous modifiez les fichiers de base)
- Vous devriez commettent régulièrement des modifications à votre système de contrôle de source, de sorte que vous pouvez suivre les changements que vous apportez et "faire reculer" ces changements si vous cassez quelque chose.
- Quand une nouvelle version de Drupal est publié, nous mettrons à jour notre référentiel. Vous pouvez ensuite mettre à jour votre projet local drupal (sans perdre vos réglages locaux à l'âme drupal) en exécutant:
svn merge http://svn-drupal.transmachina.net/trunk/drupal/
Vous devez remplacerhttp://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal avec la version de Drupal que vous utilisez actuellement, disons, "5.10". Cette procédure vérifier le référentiel Transmachina pour tous les changements de votre version de Drupal à la dernière version, et patche votre copie de travail avec ces diffs. - Vous devez tester la mise à niveau sur place et ensuite valider les modifications dans votre système de contrôle de version.
- Vous avez correctement mis à niveau le noyau Drupal sans perdre toutes les modifications locales!
Mise à niveau un projet existant Drupal
Si vous êtes déjà en cours d'exécution Drupal et que vous voulez simplement mettre à jour vers la dernière version sans perdre vos changements locaux, c'est trop facile! Vous devriez probablement valider toutes les modifications locales de retour à votre référentiel et marquer la libération de telle sorte que vous pouvez facilement rollback en cas d'erreur dans les étapes suivantes.- Il suffit de lancer:
svn merge http://svn-drupal.transmachina.net/trunk/drupal/
Vous devez remplacerhttp://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal avec la version de Drupal que vous utilisez actuellement dire, "5.10".
Plus de détails
Mise à jour du référentiel
Pour ceux qui sont intéressés, nous avons développé un script simple pour mettre à jour notre dépôt subversion rapidement après chaque nouvelle version de Drupal.#!/bin/sh # $1 drupal version # the base of the WC repobase=/home//drupal/trunk Echo downloading to tmp # remove file so that it doesn't concat rm -f /tmp/drupal-$1.tar.gz # download the relase wget -O /tmp/drupal-$1.tar.gz http://ftp.drupal.org/files/projects/drupal-$1.tar.gz # extract contents to tmp folder tar -C /tmp -xvzf /tmp/drupal-$1.tar.gz echo Loading diff changes into repos svn_load_dirs -svn_username -svn_password http://svn-drupal.transmachina.net/trunk/drupal/5.x . /tmp/drupal-$1 # and now add that relase as-is into subversion too echo Copying new release from $1 to location drupal/$1 cp -R -v /tmp/$1 $repobase/drupal/$1 echo Queuing new release files to svn svn add $repobase/drupal/$1 echo Commiting new release svn commit $repobase/drupal -m "Adding new drupal release $1"
Mise à jour une copie de travail
Nous avons un script pour mettre à jour chacun de nos copies de travail a également:#!/bin/sh # $1 drupal version of WC # $2 location of WC drupal root #svn merge --dry-run http://svn-drupal.transmachina.net/trunk/drupal/$1 http://svn-drupal.transmachina.net/trunk/drupal/5.x $2 svn merge http://svn-drupal.transmachina.net/trunk/drupal/$1 http://svn-drupal.transmachina.net/trunk/drupal/5.x $2Lorsque vous êtes le premier se présente en cours, il peut être souhaitable de lancer avec l'option - dry-run ligne au lieu. Cette option permet d'imprimer toutes les modifications qui seront apportées à votre copie de travail sans pour autant rien changer. S'il ya plus que d'environ 40 mises à jour et les conflits 3-4 quelque chose de sans doute mal tourné. Si la fusion fait un gâchis de votre copie de travail, vous pouvez essayer
svn revert -R mydrupalde manière récursive annuler tous les changements locaux revenir à la dernière fois que vous engageons à le référentiel. Dans le pire des cas vous, vous pouvez utiliser TortoiseSVN (uniquement sur Windows malheureusement) rollback une installation entière à une révision précédente - il fait essentiellement les modifications récentes commises dans le sens inverse.

Commentaires
David Grant (non vérifié)
Mar, 2008-09-16 23:49
Permalien
Grands travaux!
J'ai toujours pensé que de faire cela, et en fait tout récemment, j'ai aussi mis mes dépôts drupal sur un serveur svn qui est disponible pour tout le monde via http (précédemment, mon référentiel était disponible uniquement via ssh). Je ne vais pas publier l'url ici cependant, car ce serait l'eau en bas de votre effort.
J'ai récemment publié un script de mise à jour de modules de Drupal dans un répertoire de travail de Subversion. C'est un peu comme svn_load_dirs. Il fondamentalement juste supprime tous les fichiers dans un répertoire du module (sauf dirs svn.) Et puis untars le nouveau module. Puis il regarde le "svn status" de sortie et cherche le "M", "?" ou "!" et s'engage, ajoutez-commit, ou supprimer-commits, respectivement, apportant ainsi un module jusqu'à une nouvelle version.
Le problème avec ceci est que je perds mes modifications locales, cependant, je peux toujours faire un "svn log" et de fusionner certains changements anciennes dans le référentiel. Je peux faire un script pour ce faire ainsi. Parce que le message de commit de la "mise à jour du module« étape I ci-dessus est toujours la même auto-généré type de message, je peux les rechercher dans la sortie du journal svn et de détecter les changements étaient les miens. Je peux alors l'auto-fusion ceux qui reviennent sur la tête. :-)