Mengelola situs dengan Git

8

Saya mulai menggunakan Git untuk mengelola pembuatan situs Joomla, dan saya mencari beberapa panduan praktik terbaik. Seperti berdiri:

  • Gunakan WHM untuk menyediakan akun baru. Saya telah menulis hook pasca pemasangan untuk mengunduh Joomla dari Github secara otomatis dan meletakkannya di public_htmldirektori yang relevan , serta membuat basis data dan pengguna DB
  • Instal Joomla secara manual melalui antarmuka web (meskipun saat ini mencari cara untuk mengotomatisasi ini juga)
  • Siapkan repo kosong di atas public_html- ini adalah tempat pengguna mendorong dan menarik. Kami akan memanggil iniorigin
  • Siapkan repo standar public_html
  • Tambahkan khusus Joomla .gitignore
  • Tentukan repo telanjang sebagai remote kami ( git remote add origin ../repo.git)
  • Lakukan git add ., lalu git commit -m"Initial J! Commit", kemudian git push origin masteruntuk mendapatkan instalasi default di repo telanjang kami
  • Tambahkan post-receivehook ke bare repo untuk secara otomatis menarik perubahan ke dalam repo in public_html(karena bare repo adalah tempat pengembang akan mendorong perubahan lokal ke)
  • Tambahkan post-updatehook ke repo public_htmlkalau-kalau ada yang membuat perubahan pada server ... meskipun mereka tidak boleh

Saya tidak terlalu khawatir tentang database saat ini. Masalah utama saya sekarang adalah berurusan dengan penambahan / perubahan file Joomla. Jelas ketika saya menginstal template dan ekstensi file tertentu akan ditambahkan dan dihapus. Demikian pula pembaruan Joomla akan menyebabkan perubahan.

Apa cara terbaik untuk menghadapi perubahan di server ini? Saya berpikir untuk menulis sebuah plugin kecil yang berjalan onAfterRenderatau serupa yang menggunakan PHPGit untuk melakukan git add ., git commit git push origin master. Kemudian, dalam salinan lokal saya, saya hanya bisa melakukan tarikan dan semuanya masuk. Atau ada cara yang lebih baik?

tangan coding
sumber

Jawaban:

4

Saya tidak mengerti mengapa Anda mengatur struktur telanjang / publik;

Saya hanya menggunakan public_html sebagai root dari repo, dengan .gitignore yang sangat lengkap (yang perlu diperbarui setelah setiap pembaruan Joomla !, dengan git statusAnda menemukan file baru dan menambahkannya sehingga mereka tidak mendapatkan versi).

Pengembang mendorong ke cabang pengembangan; pada akhirnya ketika sebuah rilis disetujui, itu dibuat ulang terhadap master, diuji dan didorong untuk diproduksi.

Saya tidak menggunakan kait tetapi memiliki beberapa skrip yang membuang bagian database yang relevan yang ingin saya bagikan, tetapi serahkan kepada pengguna untuk menjalankan skrip impor jika mereka mau; dengan cara ini jika seseorang bekerja pada ekstensi baru, mereka akan menjaga konfigurasi mereka sampai mereka siap untuk dibagikan.

Jika Anda menggunakan lebih sedikit / sass, Anda mungkin ingin menjalankan kompilasi di post-commit-hooks untuk memastikan flag kompresi selalu aktif di server.

- perbarui: .gitignore -

Saya tidak dapat membagikan .gitignore saya di sini karena ini dapat berubah setiap Joomla! memperbarui. Pertama-tama, pastikan eclipse .project .settings dll dan file lain yang ingin Anda kecualikan berada di master .gitignore bersama dengan configuration.php dan .htaccess. Master .gitignore saya terlihat seperti ini untuk situs dengan komponen jahat yang menulis perubahan pada folder mereka sendiri alih-alih cache dan tmp; ditambah lagi menggunakan sass:

*/.sass-cache
/components/com_sobipro/var/cache/*
/components/com_djclassifieds/images/*
/components/com_sobipro/tmp/*
/components/com_sobipro/var/*
/log
/._db.sql
/logs
/stats
/components/com_sobipro/tmp/edit/*
/.buildpath
/.project
/.settings
/.htaccess
/images/icons/*
/images/photos/*
/images/sobipro/*
/images/classifieds/*
/administrator/cache/*
/tmp/*
/configuration.php
/index.php
/joomla.xml
*.txt

jadi saya mulai dengan menyalinnya (dari root web):

cp /home/_core/.gitignore .

Kemudian meledak paket pembaruan (paket pembaruan lengkap) dan kemudian jalankan

find | sed "s/^\.//"  >> /home/yoursitefolder/public_html/.gitignore

PERINGATAN jangan menjalankan temuan di situs langsung, hanya pada paket pembaruan!

Jalankan beberapa tes dan lihat dengan status git apa yang akan ditambahkan setiap kali sebelum Anda menyelesaikan prosedur dan menulis skrip bash untuk itu: inilah yang saya gunakan tetapi tidak dijamin akan sesuai dengan kebutuhan Anda 100%

Riccardo Zorn
sumber
Terima kasih atas jawaban Anda - apakah Anda bersedia mempublikasikannya .gitignore? Saat ini saya adalah satu-satunya pengembang dan saya cukup baru di Git, jadi saya mengikuti beberapa panduan alur kerja web dev untuk menjadikan saya di mana saya berada, yang mengarah ke struktur telanjang / publik.
coding tangan
Tidak, saya tidak akan menempelkannya di sini; Saya baru saja menambahkan arahan untuk membuatnya
Riccardo Zorn
Hai Riccardo - terima kasih, saya sudah punya yang cukup lengkap .gitignore, hanya ingin melihat ada perbedaan.
coding tangan
Anda dapat mengabaikan folder secara global, misalnya: untuk mengabaikan folder cache di mana-mana, cukup tambahkan cache/ke .gitignore Anda
jackJoe