it-swarm-id.com

Bagaimana cara menggabungkan perubahan dari salinan pengembangan situs ke situs langsung tanpa kehilangan konten baru?

Apa prosedur terbaik untuk menggabungkan pekerjaan yang dilakukan pada salinan pengembangan situs ke salinan produksi langsung? Sering kali ada banyak konten baru yang ditambahkan ke situs sejak pengembangan dimulai pada fitur-fitur terbaru. Dan sebagian besar penambahan situs akan melibatkan perubahan basis data. Jadi menyalin file baru itu mudah, tetapi bagaimana dengan database? Bagaimana Anda menggabungkan perubahan Anda dengan database produksi yang ada tanpa kehilangan konten baru yang ditambahkan sejak terakhir kali Anda memperbarui situs produksi? Apakah ada modul yang membantu ini?

40
Chaulky

Untuk tipe konten, tampilan, dan perubahan struktur pada situs pengembang lihat menggunakan Fitur untuk mengekspor database ke kode.

Untuk migrasi konten ada banyak pilihan, tetapi bukan solusi tunggal yang solid. Salah satu contoh adalah Deployment suite .

16
budda

Saya pada dasarnya mengadopsi dua aliran pemikiran di sini (pemikiran ke-3, melakukan perbedaan basis data, saya tidak akan membahas karena kompleksitasnya cukup tinggi).

1) Menyebarkan dengan menjatuhkan basis data produksi, dan mengimpor mysqldump dari database pengembangan. Secara opsional, jalankan regex find/replace terlebih dahulu di tautan absolut apa pun yang dikodekan keras yang merujuk URL dev dalam dump SQL. Setelah mengimpor dev db ke dalam prod, secara otomatis jalankan pernyataan SQL (biasanya melalui skrip) setelah itu untuk mengubah pengaturan yang berbeda untuk prod daripada dev (misalnya, mungkin Anda memiliki dalam tabel variabel beberapa pengaturan koneksi untuk menghubungkan ke sistem eksternal yang Anda butuhkan untuk ubah untuk menunjuk pada prod sistem eksternal dan bukan pada versi dev).

2) Gunakan modul Fitur , seperti yang disebutkan oleh budda, untuk pengaturan admin, dan gunakan modul Node Export untuk ekspor/impor konten dalam kombinasi dengan Hapus) Semua modul. Jadi alur kerjanya adalah:

  1. gunakan node_export dan fitur untuk mengekspor node/fitur ke file
  2. Opsional (dan semoga) kontrol versi
  3. Muat file pada sistem prod
  4. Gunakan antarmuka drush atau admin untuk memuat fitur
  5. Gunakan antarmuka hapus semua atau admin untuk menghapus semua node dari jenis yang ingin Anda impor
  6. Gunakan drush ne-import atau antarmuka admin untuk mengimpor node dari file node yang Anda ekspor.

Satu catatan, saya akan sangat menyarankan mengadopsi alur kerja standar, di mana konten berjalan satu arah saja. Entah Dev -> Prod atau Prod -> Dev (Saya lebih suka yang ini).

Saya telah melakukan ini, dan saya melakukan ini pada beberapa sistem besar, dengan hasil yang cukup baik, tetapi akan selalu ada banyak cara untuk mengiris Apple ini, pilih cara mana yang paling cocok untuk Anda.

2
coderintherye

Buang database dari copy situs langsung & copy pengembangan situs dalam file SQL (gunakan parameter & pengaturan yang sama untuk kedua dump).
Lalu, bandingkan kedua file SQL menggunakan alat perbandingan kecil ExamDiff . Ini akan menampilkan perbedaan file berdampingan dengan warna berbeda. Anda dapat langsung melompat ke perbedaan juga (tanpa menggulir). Periksa perbedaannya & tambahkan/edit baris ke file SQL situs langsung. Pastikan tidak ada jalur absolut/URL lingkungan pengembangan di file itu. Itu selesai! Saatnya memulihkan database untuk situs langsung.
Buat hidup Anda lebih mudah: Pada langkah pertama, buang hanya tabel-tabel yang diubah. Misalnya, jika Anda telah mengedit modul dalam copy pengembangan yang menargetkan tabel terpisah, buang saja tabel ini. Jika Anda tidak yakin tentang tabel tertentu, seluruh dump database baik-baik saja.

1
user931