¿Actualizar módulos con drush sin romper SVN?

8

Bien, esto me ha estado rompiendo por dos días. ¡No puedo obtener una respuesta en ningún lado!

Tengo drush 4.4 en mi servidor. Estoy usando SVN a través de Unfuddle.com. Tengo un sitio, quiero actualizar muchos módulos. Quiero actualizar solo el código, luego verificar que esté funcionando (las actualizaciones de la base de datos no son una preocupación en este momento) y luego confirmar el código relevante.

Solía ​​ser que drush dl simplemente descargaría el código del módulo sobre la parte superior del módulo anterior, sin eliminarlo. Ese ya no es el caso. Ahora, AFAICT, drush elimina el directorio del módulo y lo reemplaza con la versión más nueva. Eso está muy bien, porque resuelve el problema de los archivos antiguos que ya no están en el módulo actualizado que se queda atrás.

Sin embargo, al usar los comandos drush dl o upc, estoy atascado, porque ejecutar estos comandos realmente obtiene la versión más nueva, pero destruye la carpeta de datos SVN en el proceso, dejándome con problemas "! Module / file.php" en todas partes para archivos que ya no están allí.

Me han informado que "drush upc / dl modulename --version-control = svn" debería funcionar, pero no funciona. Los datos SVN aún se destruyen.

Esto me deja con la pesadilla potencial de tener que: svn del module, svn commit -m "Módulo eliminado", módulo drush dl, (prueba el módulo), svn add module, svn commit -m "Módulo agregado" - para cada uno módulo, que es un horror total.

No quiero configurar drush para confirmar automáticamente mis cambios, solo quiero descargarlos y confirmarlos todos manualmente al final cuando estoy satisfecho con los cambios. Esto no puede ser tan difícil, pero simplemente no puedo hacer que funcione.

También me han informado que pasar a git (sí, ¡sé que unuddle admite git!) También es una solución, pero no es inmediata y no es satisfactoria en este momento.

¿Alguien puede arrojar algo de luz sobre esto?

NikLP
fuente
Puede ser más fácil aprender git.
chrisjlee

Respuestas:

6

porque ejecutar estos comandos realmente obtiene la versión más nueva, pero destruye la carpeta de datos SVN en el proceso, dejándome con "! module / file.php"

Estoy ejecutando Drush 4.4 y este no parece ser el caso para mí. Ejecuta drush upco drush upmantiene sus .svndirectorios intactos. Puede svn statusrevisar los cambios en los módulos. Los archivos nuevos se indican mediante ?y los archivos eliminados se indican mediante !.

Prueba la funcionalidad de tu sitio. Una vez que esté satisfecho de que los módulos siguen funcionando correctamente, puede svn agregar / quitar con un fragmento como el siguiente:

añadir:

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

eliminar:

svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done
jwal
fuente
Tal vez "destruye datos de svn" fue un error de mi parte. Anteriormente, ¡no veía ninguno! pero solo?, que debidamente agregué. Este es quizás un punto de ignorancia de mi parte. Supongo que era la expectativa de la facilidad de la manera anterior en la que trabajé, que era (debido a algo ahora arreglado en borrachera) realmente erróneo.
NikLP
4

Debe agregar --svnsynca su comando.

Ejemplo:

 drush pm-update module_to_update --version-control=svn --svnsync 
claire_
fuente