Saya membuat situs Drupal di bawah kontrol git untuk pekerjaan pengembangan.
Ini dipasangkan dalam master, repo telanjang GIT, dan karena perubahan dibuat di berbagai klon git proyek-pekerjaan saya, dan didorong kembali ke master, kait pasca-pembaruan segera mendorong perubahan ke satu situs web Staging langsung (http: / /staging.loc.). Tidak ada yang istimewa, bekerja seperti yang diharapkan.
Saya juga drush-alias situs "@STAGING". Kadang-kadang, saya ingin mempromosikan perubahan saya dari situs Pementasan ke server produksi.
Dua metode yang relatif langsung datang ke pikiran:
(1) Pada titik ketika situs Pementasan tampak stabil, buat situs Produksi sebagai git checkout dari master repo,
(2) menggunakan drush rsync
+ drush sql-sync
dari lokasi pementasan ke lokasi produksi.
Keduanya bisa dibuat bekerja. Selain fakta bahwa (2) tampaknya lebih Drupal-sentris / sadar secara alami - drush, bagaimanapun, adalah seperangkat alat khusus Drupal - apa manfaat relatif dari kedua pendekatan tersebut?
Apakah ada alasan khusus yang harus saya pertimbangkan (1) di atas (2)?
Dalam kedua kasus "Semuanya" di bawah setidaknya satu contoh kontrol revisi ...
sumber
"rsync' => array ('exclude-paths' => '.git:.DS_Store:.gitignore:.gitmodules:',"
dalam file .rc, meskipun saya belum yakin apakah saya memerlukannya baik dalam sumber atau target alias spesifikasi atau hanya satu atau yang lain.Masalah dengan menggunakan drush rsync adalah jika Anda memiliki banyak orang yang mendorong perubahan ke server.
Contoh Anda hanya menunjukkan satu orang yang mendorong perubahan.
Jika Anda memiliki pengembang A yang mendorong perubahannya dan kemudian pengembang B mendorong perubahannya, Anda ingin git menghapus konflik, atau membuat pengembang B menghapus konflik.
sumber
Saya sebenarnya menggunakan keduanya. svn / git dan rsync melayani dua tujuan berbeda. svn / git untuk kontrol sumber,
rsync
dansql-sync
untuk menyinkronkan pementasan dan prod efisien.drush rsync @staging @prod
sangat sulit dikalahkan dalam hal kesederhanaan, dan sangat mudah untuk diintegrasikan di sebagian besarcontinuous Integration
lingkungan apa pun jika Anda ingin menyelam lebih dalam dalam kegilaan / metodologi kualitas kode.sumber
Secara pribadi saya menggunakan Git untuk kontrol versi, penyebaran dan sinkronisasi berbagai basis kode server dan kemudian rsync untuk memindahkan / menyinkronkan file pengguna (diabaikan dengan menambahkan jalur tertentu ke file .gitignore).
sumber