Обновление модулей с помощью Drush без разрыва SVN?

8

Да, это сломало меня в течение двух дней. Я нигде не могу получить ответ!

У меня есть Drush 4.4 на моем сервере. Я использую SVN через Unfuddle.com. У меня есть сайт, я хочу обновить много модулей. Я хочу обновить только код, затем проверить, работает ли он (обновления БД на данный момент не имеют значения), а затем зафиксировать соответствующий код.

Раньше drush dl просто загружал код модуля поверх старого модуля, не удаляя его. Это уже не так. Теперь, AFAICT, drush удаляет каталог модуля и заменяет его более новой версией. Это все хорошо, потому что это решает проблему старых файлов, которых больше нет в обновленном модуле.

Однако, используя команды drush dl или upc, я застрял, потому что выполнение этих команд действительно получает более новую версию, но в процессе уничтожает папку данных SVN, оставляя меня везде с проблемами "! Module / file.php" для файлы, которых больше нет

Мне сообщили, что «drush upc / dl modulename --version-control = svn» должно работать, но это не так. Данные SVN все еще уничтожены.

Это оставляет меня с потенциальным кошмаром необходимости: svn del module, svn commit -m "Удаленный модуль", модуль drush dl, (протестировать модуль), svn add module, svn commit -m "Added module" - для каждого Модуль, который представляет собой полный ужас.

Я не хочу устанавливать drush для автоматической фиксации моих изменений, я просто хочу загрузить их и зафиксировать все вручную в конце, когда я доволен изменениями. Это не может быть так сложно, но я просто не могу заставить его работать.

Мне также сообщили, что переход к git (да, я знаю, что unuddle поддерживает git!) Также является решением, но оно не является немедленным и не является удовлетворительным на данный момент.

Кто-нибудь может пролить свет на это ?!

NikLP
источник
Может быть легче учиться мерзавцу.
Chrisjlee

Ответы:

6

потому что выполнение этих команд действительно дает более новую версию, но в процессе уничтожает папку данных SVN, оставляя меня с "! module / file.php"

Я использую Drush 4.4, и мне кажется, что это не так. Работает drush upcили drush upсохраняет ваши .svnкаталоги нетронутыми. Вы можете svn statusпросмотреть изменения в модулях. Новые файлы обозначены, ?а удаленные файлы обозначены !.

Проверьте работоспособность вашего сайта. Как только вы убедитесь, что модули по-прежнему работают правильно, вы можете добавить / удалить svn с помощью следующего фрагмента:

Добавить:

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

Удалить:

svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done
jwal
источник
Возможно, «уничтожение данных SVN» было ошибкой с моей стороны - раньше я не видел ни одной! но просто?, который я должным образом добавил SVN. Это, возможно, точка невежества с моей стороны. Я предполагаю, что это ожидание легкости предыдущего способа, которым я работал, что было (из-за чего-то теперь исправленного в drush) действительно ошибочным.
НикЛП
4

Вы должны добавить --svnsyncк своей команде.

Пример :

 drush pm-update module_to_update --version-control=svn --svnsync 
claire_
источник