Bagaimana cara menambahkan kontrol versi ke alur kerja saya?

11

Saya mengembangkan tema, banyak di antaranya. Saya diberikan PSD, kode HTML / CSS, menampar kode ke Wordpress, dan membuat koreksi saat mereka mendapat QC'd. Setelah live, klien dapat mengedit posting blog seperti biasa atau mengunggah foto menggunakan plugin khusus.

Kadang-kadang saya harus membuat perubahan pada tema atau ke konten halaman / posting, yang berarti saya membuatnya secara langsung atau harus mengunduh dan mengatur situs ke lingkungan pengembangan untuk disetujui oleh klien. Saya tidak punya cadangan, saya tidak punya kontrol versi, dan saya menyadari ini perlu diubah.

Git dan Mercurial telah disarankan, dan saya ingin memanfaatkan alat-alat ini, tetapi saya bingung tentang bagaimana memasukkannya ke dalam alur kerja.

Apakah saya memerlukan semua perubahan pada situs di server pengembangan dan kemudian mendorongnya langsung setelah disetujui? Bagaimana dengan menulis posting blog? Sepertinya berlebihan untuk menulis posting di dev dan mendorong perubahan secara langsung, tetapi kemudian bagaimana cara menyinkronkan basis data jika diedit di situs langsung? Saya telah menjelajahi internet. Beberapa panduan akan dihargai.

bebaskan
sumber
Saya pikir ini memenuhi syarat sebagai pertanyaan ekosistem di luar ruang lingkup. Lihat di sini untuk diskusi berkelanjutan .
Chip Bennett
4
@ChipBennett saya tidak setuju. Ketergantungan khusus WordPress antara tema, plugin dan basis data dan bagaimana pengaruhnya terhadap praktik pengembang umum dipersilakan.
fuxia
@ tocho saya pasti bisa diyakinkan tentang itu; itu sebabnya saya menunjuk ke diskusi Meta. :)
Chip Bennett

Jawaban:

9

Pertama-tama, Anda perlu mengenali bahwa ada dua alur kerja di sini: milik Anda dan klien Anda.

Alur Kerja Anda

  • Terima PSD
  • Kode HTML / CSS
  • Templat kode WordPress
  • Menyebarkan tema untuk hidup situs WordPress

Alur Kerja mereka

  • Rancang perubahan yang diperlukan dan kirim email kepada Anda
  • Tulis posting
  • Unggah Foto

Masalah

Menerapkan kontrol versi di sini sama sekali tidak ada hubungannya dengan alur kerja klien Anda. Ini semua tentang melacak kode yang Anda gunakan untuk tema WordPress. Semua file tema Anda, plugin kustom, dll harus dalam sistem kontrol versi (Git, Mercurial, Subversion, atau apa pun yang Anda pilih untuk digunakan).

Alur kerja Anda kemudian menjadi:

  • Tulis kode
  • Mengkomit perubahan pada sistem kontrol versi
  • Dorong perubahan ke situs produksi
  • Dapatkan komentar kembali dari klien
  • Tulis kode
  • Komit perubahan
  • Tulis kode
  • Komit perubahan
  • Dorong perubahan ke situs produksi

Ingat, ini tentang mempertahankan riwayat kontrol versi untuk kode Anda . Kode adalah sesuatu yang tidak boleh diubah oleh klien Anda - dan Anda tidak boleh mengubah kode di situs produksi saat sedang dalam produksi.

Tetapi perubahan pada konten (posting, foto, dll) berada di luar ruang lingkup sistem kontrol versi Anda. Dengan kata lain, Anda tidak membuat perubahan dalam pengembangan dan kemudian mendorong database ke produksi. Itu praktik pembangunan yang buruk. Jika Anda memerlukan basis data dev dan prod di-sinkronisasi, maka Anda harus secara rutin menarik cadangan dari kotak produksi dan mengembalikan versi lokal Anda dari cadangan itu.

Perubahan kode mengalir dari pengembangan ke produksi.
Perubahan basis data mengalir dari produksi ke pengembangan.

EAMann
sumber
Anda tidak dapat benar-benar menyinkronkan database dengan mudah kecuali Anda memiliki skrip khusus yang mengelola bagaimana data konten disimpan dalam database. Itulah sebabnya Anda memisahkan kode dari konten dalam alur kerja Anda, alternatifnya adalah menggunakan server pementasan atau mencoba dan menggunakan salah satu skrip sinkronisasi db atau menulis sendiri.
Wyck
@EAMann Tanggapan yang bagus, terima kasih! Satu-satunya hal yang akan saya tambahkan ke alur kerja yang Anda gambarkan adalah menulis kode, melakukan perubahan, mendorong ke situs pengembangan, mendapatkan komentar kembali dari klien, ... Saya tidak mempertimbangkan dua alur kerja yang terpisah karena secara teratur kita harus mengubah puas diri untuk klien. Terkadang kita harus meletakkan HTML di konten untuk mengakomodasi permintaan khusus di dalam konten (gaya khusus, dll). Terkadang mereka membutuhkan persetujuan klien sebelum ditayangkan, itulah sebabnya basis data perlu disinkronkan. Adakah praktik terbaik untuk pengaturan semacam ini?
bebaskan
@Wyck Daripada menjatuhkan konten di samping tema, masuk akal untuk memisahkan kedua proses. Saya suka ide area dev untuk tema dan area pementasan untuk konten yang terlepas satu sama lain. Satu-satunya masalah yang saya lihat adalah bahwa klien suka melihat tema dan konten (situs secara keseluruhan; halaman statis) sebelum meluncurkannya secara langsung.
bebaskan
Biasanya tidak masalah menyinkronkan perubahan basis data. Apa yang ingin saya katakan adalah bahwa Anda membuang database produksi Anda dan mengganti database pengembangan lokal Anda dengannya. Benar, Anda dapat mengotomatiskannya dengan skrip ... tetapi kemungkinan besar Anda tidak akan sering melakukannya.
EAMann
3
Belum ada, apakah itu benar-benar duri di sisi WordPress tetapi tidak secara khusus masalah WordPress karena banyak CMS memiliki masalah ini, Anda dapat membacanya di sini wordpress.stackexchange.com/questions/119/... lebih mendalam, beberapa skrip memang ada di luar sana tetapi kebanyakan dari mereka ada di rumah karena mereka khusus untuk lingkungan tertentu.
Wyck
1

Anda dapat menggunakan perangkat lunak yang menyinkronkan basis data. Tetapi ada juga opsi untuk mengversi data itu sendiri dengan sesuatu seperti http://chronicdb.com

Gary
sumber
Ini terlihat menarik; dapat memecahkan beberapa masalah. Saya akan memeriksanya, terima kasih.
bebaskan
1

Saya baru saja menulis jawaban menyeluruh untuk ini pada pertanyaan lain. Secara pribadi saya menggunakan git dan ini luar biasa. Dalam hal memulai, saya akan merekomendasikan memeriksa http://gitref.org/ dan http://help.github.com/mac-set-up-git/ . Jika Anda adalah tipe buku, saya sudah membaca yang ini dan pasti bernilai harga ebook $ 22. Buat diri Anda melakukannya, Anda tidak akan menyesali keputusan itu.

Matthew Boynes
sumber
Terima kasih, saya harus merujuk kembali padanya. Setup database master / slave terdengar menarik. Terima kasih untuk panduannya
bebaskan