Apa etiket yang tepat dan alur kerja GitHub yang direkomendasikan untuk secara simultan berkontribusi dan menyimpang dari repo hulu?

21

Saya baru mengenal GitHub dan VCS secara umum. Saya telah pemrograman dalam berbagai bahasa selama bertahun-tahun, tetapi saya selalu bekerja sendiri pada proyek-proyek khusus (tidak ada rilis publik). Saya baru-baru ini mulai menggunakan widget jQuery UI yang saya unduh dari GitHub dalam proyek yang sedang saya kerjakan. Repo tidak lagi dikelola oleh penulis asli. Garpu lain telah memasukkan beberapa permintaan tarik asli. Ini yang saya potong dari.

Saya menemukan beberapa bug dan membuat perbaikan untuk mereka. Saya ingin berkontribusi perbaikan ini, tetapi saya juga memiliki banyak perubahan lain yang ingin saya buat, untuk penggunaan kita sendiri, yang akan merusak beberapa fitur yang ada. Plus, saya ingin memasukkan ide dari garpu lain.

Saya masih belajar GIT dan GitHub dan saya mencoba mencari cara terbaik untuk melakukan segalanya. Saya telah melakukan banyak pembacaan (di sini, SO, halaman bantuan GitHub, Pro Git) tentang berbagai konsep / tugas: alur kerja, penggabungan, permintaan tarik, pengambilan ceri, rebasing, percabangan. Materi abu-abu saya berenang dan saya harus mulai melakukannya sehingga saya bisa lebih memahami apa yang saya baca.

Masalah utama:

  1. Saya pikir saya membaca (di suatu tempat) bahwa Anda hanya dapat memiliki satu permintaan tarik pada cabang sekaligus. Jadi apakah itu berarti saya harus memiliki cabang terpisah untuk setiap bug dan kemudian melakukan permintaan tarik terpisah untuk masing-masing bug?

  2. Saya ingin membersihkan masalah spasi putih dan sepertinya saya ingat pernah membaca bahwa yang terbaik adalah melakukan ini dalam komit terpisah. Haruskah saya melakukan ini di tuan saya atau cabang terpisah? Saya tidak ingin melakukan permintaan tarik untuk sesuatu yang sepele , tetapi jika saya membuat perubahan spasi putih sebelum bercabang, apakah itu akan memengaruhi permintaan tarik untuk perbaikan bug? Beberapa fork melakukan pembersihan spasi dan itu secara efektif membuat diff tidak berguna.

  3. Saya berpikir untuk membuat masalah terhadap garpu saya sebagai cara mendokumentasikan bug meskipun saya sudah memiliki perbaikan untuk mereka. Apakah itu ide yang bagus? Bagaimana cara saya menghubungkan semua masalah, komit, dan gabungan untuk dikuasai? Jika saya melakukan permintaan tarik ke atas, apakah masalah saya juga muncul di atas atau akankah tautan dokumentasi hilang? Saya tidak dapat membuka masalah terhadap repo hulu (tidak ada tab masalah).

  4. Apa cara terbaik untuk memberi penghargaan kepada penulis garpu lain atas gagasannya yang ingin saya gunakan? Saya tidak dapat menggunakan kodenya dengan tepat, terutama karena perubahannya diterapkan terhadap versi upstream yang lebih lama dan tidak kompatibel dengan perubahan saya yang lain sebagaimana adanya. Tapi saya ingin menggunakan ide dan saya ingin memberikan kredit di mana kredit jatuh tempo. Haruskah saya menautkan ke repo-nya (atau profil atau komit tertentu) dalam pesan komit saya?

  5. Apa etiket tentang mengubah file readme dan DocBlock di bagian atas file utama? Apakah boleh melakukan perubahan, menambahkan nama saya, menambahkan tautan ke repo dan demo saya, menghapus tautan ke demo asli (karena garpu saya pada akhirnya tidak sesuai dengan yang asli)? Tentu saja, saya akan meninggalkan nama penulis asli dan informasi lisensi. Sebagai catatan, ini dilisensikan di bawah lisensi MIT.

Sebagai pengembang solo yang tidak pernah menggunakan VCS, saya terbiasa menulis ulang sejarah . Saya seorang perfeksionis dan suka hal-hal yang rapi dan rapi. Gagasan mencatat sejarah membuat saya sedikit gugup dan saya ingin melakukannya dengan benar pertama kali . Saya telah membuat repo baru untuk dimainkan / dipelajari, tetapi saya ingin segera memperbaiki widget jQuery UI sehingga saya dapat melanjutkan proyek saya.

toxalot
sumber

Jawaban:

15
  1. Benar: permintaan tarik ditautkan ke cabang di repositori Anda. Jika Anda memodifikasi cabang, Anda kemudian memodifikasi apa yang Anda kirim sebagai permintaan tarik.

    Jadi ya, Anda harus membuat cabang (dan tarik-permintaan) per perbaikan bug. Mungkin bijaksana untuk memulai dengan satu dan melihat bagaimana pengelola bereaksi terhadap yang itu sebelum melanjutkan untuk melakukan sisanya. Open source adalah proses sosial yang inheren.

  2. Do membuat pull-permintaan untuk perubahan spasi Anda! Berbicara sebagai seseorang yang kadang-kadang seorang pengelola, saya menyukai jenis permintaan tarik ini: Saya menyetujuinya atau tidak, dan mereka membutuhkan sedikit waktu untuk memprosesnya.

    Apa yang mungkin juga Anda temui adalah bahwa pengelola tidak setuju dengan perubahan spasi putih Anda! Jadi berhati-hatilah ..

  3. Hmm .. Tidak jelas apa yang ingin Anda capai di sini. Kedengarannya seperti dokumentasi berlebihan dan bukan ide yang bagus - mungkin Anda bisa menjelaskan mengapa Anda ingin melakukan ini?

  4. Menautkan ke repo-nya di pesan komit Anda (atau bahkan dalam komentar dalam kode) adalah cara yang bagus untuk memberikan kredit. Berhati-hatilah - buat eksplisit bahwa Anda berterima kasih padanya atas idenya dan bukan karena kodenya. Jika Anda telah menyalin kode, maka saya akan mengirim email kepadanya tentang hal itu, kecuali sangat jelas lisensi yang ia gunakan untuk kode itu. Jika lisensi jelas (dan ini adalah lisensi yang berbeda dari repositori yang Anda kirimkan komitnya) maka Anda perlu menambahkan lisensi yang berbeda dalam permintaan tarik Anda dan juga menyebutkannya dalam pesan permintaan tarik Anda.

  5. Ini adalah pertanyaan yang sangat bagus dan berbeda tergantung pada siapa Anda berbicara. Pendapat saya adalah bahwa Anda tidak boleh menambahkan nama Anda ke komit atau kode yang Anda lakukan. Alasan utama adalah bahwa ini menyiratkan "kepemilikan dan tanggung jawab untuk kode" - itu mungkin mencegah orang lain dari memodifikasi kode karena "itu milikmu". Tapi sekarang kita masuk ke diskusi besar tentang sifat open source, jadi saya akan berhenti di sini dan berkata - tanyakan pada pengelola proyek atau lakukan saja dan lihat apa reaksinya.

  6. Anda dapat menulis ulang riwayat (lokal Anda, yang belum diterbitkan) dengan GIT! Pelajari perintah git rebase - ini adalah salah satu alasan utama saya suka git. Gagasan yang sangat buruk untuk (memaksa) mendorong komit / riwayat yang ditulis ulang ke repositori bersama (misalnya github). Ini kemudian akan mengacaukan repositori yang dimiliki oleh pengembang lain - mereka harus melakukan hal-hal sulit ketika menarik perubahan (riwayat yang ditulis ulang) Anda.

[# 6: Terima kasih @toxalot!]

Marco
sumber
Untuk # 6, ya Anda bisa menulis ulang sejarah, tetapi hanya sejarah lokal. Setelah didorong ke repo publik, itu ide yang sangat buruk untuk menulis ulang sejarah.
toxalot