Mettre à jour les modules avec drush sans casser SVN?

8

Bon, ça me brise depuis deux jours. Je ne peux obtenir de réponse nulle part!

J'ai drush 4.4 sur mon serveur. J'utilise SVN via Unfuddle.com. J'ai un site, je veux mettre à jour beaucoup de modules. Je souhaite mettre à jour uniquement le code, puis vérifier qu'il fonctionne (les mises à jour de base de données ne sont pas un problème à ce stade), puis valider le code correspondant.

Auparavant, drush dl téléchargeait simplement le code du module par-dessus l'ancien module, sans le supprimer. Ce n'est plus le cas. Maintenant, AFAICT, drush supprime le répertoire du module et le remplace par la nouvelle version. C'est très bien, car cela résout le problème des anciens fichiers qui ne se trouvent plus dans le module mis à jour.

Cependant, en utilisant les commandes drush dl ou upc, je suis bloqué, car l'exécution de ces commandes obtient effectivement la version la plus récente, mais elle détruit le dossier de données SVN dans le processus, me laissant avec des problèmes "! Module / file.php" partout pour des fichiers qui ne sont plus là.

J'ai été informé que "drush upc / dl modulename --version-control = svn" devrait fonctionner, mais ce n'est pas le cas. Les données SVN sont toujours détruites.

Cela me laisse avec le cauchemar potentiel d'avoir à: svn del module, svn commit -m "Module supprimé", drush dl module, (tester le module), svn add module, svn commit -m "Module ajouté" - pour chaque single module, qui est une horreur totale.

Je ne veux pas configurer drush pour valider automatiquement mes modifications, je veux juste les télécharger et les valider manuellement à la fin lorsque je suis satisfait des modifications. Cela ne peut pas être si difficile, mais je ne peux tout simplement pas le faire fonctionner.

J'ai également été informé que le passage à git (oui, je suis conscient que unfuddle prend en charge git!) Est également une solution, mais ce n'est pas une solution immédiate et n'est pas satisfaisant pour le moment.

Quelqu'un peut-il faire la lumière sur ce sujet?!

NikLP
la source
Pourrait être plus facile à apprendre git.
chrisjlee

Réponses:

6

parce que l'exécution de ces commandes obtient en effet la version la plus récente, mais elle détruit le dossier de données SVN dans le processus, me laissant avec "! module / file.php"

J'utilise Drush 4.4 et cela ne semble pas être le cas pour moi. Exécuter drush upcou drush upgarder vos .svnrépertoires intacts. Vous pouvez svn statusconsulter les modifications apportées aux modules. Les nouveaux fichiers sont indiqués par ?et les fichiers supprimés sont indiqués par !.

Testez la fonctionnalité de votre site. Une fois que vous êtes convaincu que les modules fonctionnent toujours correctement, vous pouvez ensuite ajouter / supprimer svn avec un extrait tel que le suivant:

ajouter:

svn status | grep '^\?' | cut -c8- | while read f; do svn add "$f"; done

retirer:

svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done
jwal
la source
Peut-être que "détruit les données svn" était une erreur de ma part - auparavant, je n'en voyais pas! mais juste?, que j'ai dûment svn ajouté. C'est peut-être un point d'ignorance de ma part. Je suppose que c'était l'attente de la facilité de la manière précédente avec laquelle je travaillais, qui était (en raison de quelque chose maintenant fixé dans le drush) en fait erronée.
NikLP
4

Vous devez ajouter --svnsyncà votre commande.

Exemple :

 drush pm-update module_to_update --version-control=svn --svnsync 
claire_
la source