Memperbarui modul dengan drush tanpa merusak SVN?


8

Benar, ini telah menghancurkan saya selama dua hari. Saya tidak bisa mendapatkan jawaban di mana pun!

Saya telah menggunakan 4.4 pada server saya. Saya menggunakan SVN melalui Unfuddle.com. Saya punya situs, saya ingin memperbarui banyak modul. Saya ingin memperbarui hanya kodenya, lalu memeriksa apakah berfungsi (pembaruan DB tidak menjadi masalah pada saat ini) kemudian komit kode yang relevan.

Dulu drush dl hanya akan mengunduh kode modul dari atas modul lama, tanpa menghapusnya. Tidak lagi demikian. Sekarang, AFAICT, drush menghapus direktori modul dan menggantinya dengan versi yang lebih baru. Itu semua baik dan bagus, karena itu memecahkan masalah file lama yang tidak lagi dalam modul yang diperbarui tertinggal.

Namun, menggunakan perintah drush dl atau upc, saya buntu, karena menjalankan perintah ini memang mendapatkan versi yang lebih baru, tetapi itu menghancurkan folder data SVN dalam proses, membuat saya dengan masalah "! Module / file.php" di mana-mana untuk file yang tidak ada lagi.

Saya telah disarankan bahwa "drush upc / dl modulename --version-control = svn" harus bekerja, tetapi tidak. Data SVN masih dihancurkan.

Ini meninggalkan saya dengan mimpi buruk potensial harus: svn del module, svn commit -m "Removed module", drush dl module, (test module), svn add module, svn commit -m "Added module" - untuk setiap single modul, yang merupakan horor total.

Saya tidak ingin mengatur drush untuk mengkomit perubahan saya secara otomatis, saya hanya ingin mengunduhnya dan melakukan semuanya secara manual di akhir ketika saya senang dengan perubahan itu. Ini tidak mungkin sulit, tetapi saya tidak bisa membuatnya bekerja.

Saya juga telah disarankan untuk pindah ke git (ya, saya sadar tidak mendukung mendukung git!) Juga merupakan solusi, tetapi itu bukan solusi langsung, dan tidak memuaskan pada saat ini.

Adakah yang bisa menjelaskan ini ?!


Mungkin lebih mudah untuk belajar git.
chrisjlee

Jawaban:


6

karena menjalankan perintah-perintah ini memang mendapatkan versi yang lebih baru, tetapi itu menghancurkan folder data SVN dalam proses, meninggalkan saya dengan "! module / file.php"

Saya menjalankan Drush 4.4 dan ini tampaknya tidak menjadi masalah bagi saya. Menjalankan drush upcatau drush upmenjaga .svndirektori Anda tetap utuh. Anda dapat svn statusmeninjau perubahan pada modul. File baru ditunjukkan oleh ?dan file yang dihapus ditunjukkan oleh !.

Uji fungsionalitas situs Anda. Setelah Anda puas bahwa modul masih bekerja dengan benar, Anda kemudian dapat svn menambah / menghapus dengan potongan seperti berikut ini:

Menambahkan:

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

menghapus:

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

Mungkin "hancurkan data svn" adalah kesalahan pada bagian saya - sebelumnya, saya tidak melihat! tetapi hanya?, yang saya tambahkan svn. Ini mungkin titik ketidaktahuan di pihak saya. Saya kira itu adalah harapan dari kemudahan cara sebelumnya di mana saya bekerja, yang (karena sesuatu yang sekarang diperbaiki secara drush) sebenarnya salah.
NikLP

4

Anda harus menambahkan --svnsyncke perintah Anda.

Contoh:

 drush pm-update module_to_update --version-control=svn --svnsync 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.