Bagaimana Anda berkontribusi patch ke inti Drupal?

10

Apa proses yang tepat untuk berkontribusi tambalan ke inti Drupal?

Katakanlah saya menemukan bug di inti Drupal, memperbaikinya, dan membuat tambalan . Bagaimana saya mengirimkannya?

Jika bug ada di Drupal 7, apakah saya juga harus memperbaikinya di Drupal 8, dan mengirimkan dua tambalan? Apakah ini juga berlaku untuk bug / peningkatan dokumentasi?

Apakah semua tambalan juga memerlukan uji unit?

mpdonadio
sumber
3
Untuk saat ini, saya mencari jawaban dengan asumsi saya sudah memiliki akun di drupal.org, tahu cara menggunakan git, tahu cara memeriksa inti, dan tahu cara membuat tambalan git. Setelah kami memiliki jawaban yang baik, kami dapat membuat anotasi atau menambahkan jawaban untuk menguraikan proses ini.
mpdonadio
Karena ini merupakan respons terhadap masalah yang diangkat oleh pengelola inti di meta.drupal.stackexchange.com/questions/2325 , pemberitahuan pos akan diberlakukan. Kami membutuhkan ringkasan proses yang baik, terutama tentang pertanyaan di atas. Jawaban yang hanya menautkan ke halaman lain akan diturunkan dan / atau dihapus. Saya berharap pertanyaan ini akan berfungsi sebagai sumber daya yang dapat kami tunjuk pengguna DA ketika mereka menemukan masalah dengan inti.
mpdonadio

Jawaban:

6

Jika bug ada di Drupal 7, apakah saya juga harus memperbaikinya di Drupal 8, dan mengirimkan dua tambalan?

Jika bug hadir dalam versi yang sedang dikembangkan (dalam hal ini Drupal 8), dan versi sebelumnya (Drupal 7), maka bug tersebut harus diperbaiki terlebih dahulu versi yang saat ini dikembangkan, dan kemudian pada versi sebelumnya.

Jika bug tidak ada dalam versi terbaru yang dikembangkan, misalnya karena bug adalah untuk fungsi yang telah dihapus, atau yang sudah diubah, maka tambalan harus disediakan untuk versi sebelum yang saat ini dikembangkan.

Alur kerja yang diikuti adalah:

  • Pertama tambalan dibuat, dan dikirimkan untuk ulasan, untuk versi terbaru, bahkan jika masih dalam pengembangan (seperti dalam kasus Drupal 8)
  • Setelah tambalan itu diterapkan ke Drupal, tambalan yang berlaku untuk versi sebelumnya dibuat, dan dikirimkan untuk ulasan

Anda dapat membuat tambalan untuk dua versi Drupal secara bersamaan, tetapi karena tambalan untuk versi Drupal terbaru mungkin memerlukan perubahan, lebih baik bekerja pada tambalan untuk versi yang saat ini dikembangkan, daripada mengerjakan dua tambalan berbeda yang keduanya harus diubah.

Lihat juga: Kebijakan Backport .

Apakah ini juga berlaku untuk bug / peningkatan dokumentasi?

Ya, benar. Juga dalam kasus ini, jika versi yang saat ini dikembangkan menghapus fungsi / metode yang merujuk dokumentasi, maka tambalan perlu disediakan untuk versi sebelumnya.

Apakah semua tambalan juga memerlukan uji unit?

Jika tambalan untuk dokumentasi, itu tidak memerlukan tes. Bot pengujian berjalan pada http://qa.drupal.org memeriksa kode Drupal setelah tambalan diterapkan; jika tambalan memperkenalkan kesalahan sintaks (misalnya karena komentar ditutup sebelum diperlukan), maka bot pengujian akan melaporkan kesalahan tentang tambalan sebelum tes dijalankan.

Jika tambalan untuk fitur baru, maka tes diperlukan.

Jika tambalan adalah untuk memperbaiki bug, maka tes bisa diminta dari pengelola, jika belum ada tes yang memeriksa fitur tertentu. Tes ini umumnya diperlukan untuk menghindari pengenalan kembali bug yang sama ketika mengubah kode yang sama di kemudian hari. Jika bug hanyalah variabel yang diinisialisasi, tetapi tidak pernah digunakan dari suatu fungsi / metode, maka kemungkinan tes tidak diperlukan.

kiamlaluno
sumber
Bisakah masalah yang sama mengandung tambalan untuk beberapa versi inti?
mpdonadio
1
Jika masalah ini berlaku untuk lebih dari satu versi, itu bisa berisi tambalan untuk setiap versi yang tertarik.
kiamlaluno
Apakah selalu ada kasus di mana patch D8 dikirimkan terlebih dahulu, lalu versi D7? Atau adakah kasus di mana mengirimkan keduanya pada waktu yang sama sesuai?
mpdonadio
Anda bisa mengirimkan tambalan untuk dua versi berbeda, tetapi tambalan yang pertama kali berlaku adalah untuk versi terbaru. Lebih baik untuk membuat dulu tambalan untuk versi yang lebih baru, karena tambalan bisa membutuhkan perubahan.
kiamlaluno
3

Setiap halaman proyek di drupal.org memiliki tab "Version control" di bagian atas. Ini tidak hanya memberikan gambaran besar dari semua opsi repositori kode untuk proyek tertentu, semua contoh perintah git juga dirancang untuk proyek tersebut. Anda bahkan dapat mengubahnya secara interaktif ke versi tertentu juga.

Untuk inti Drupal Anda menemukan halaman itu di http://drupal.org/project/drupal/git-instructions

Kemudian ketika Anda telah membuat tambalan Anda, Anda cukup melampirkan file tambalan ke masalah yang menjelaskan apa yang Anda lakukan tambalan.

Dua hal penting yang harus ditunjukkan adalah memastikan tambalan diakhiri dengan ".patch" dan untuk mengatur status menjadi "Needs review". Ini agar testbot akan melihatnya dan secara otomatis menjalankan pengujiannya.

Kode baru selalu harus disertai dengan tes .

Perhatikan bahwa ini mungkin untuk dimatikan oleh proyek dan beberapa melakukannya. Untuk core Drupal aktif meskipun semua patch akan diuji.

Anda dapat menemukan lebih banyak di http://drupal.org/contribute/development .

tsvenson
sumber
Ini awal yang bagus.
mpdonadio