Repositori Organisasi Github, Masalah, Banyak Pengembang, dan Forking - Praktik Workflow Terbaik

14

Judul yang aneh, ya, tapi saya punya sedikit alasan untuk dibahas, saya pikir.

Kami memiliki akun organisasi di github dengan repositori pribadi. Kami ingin menggunakan fitur asli / fitur permintaan-tarik github (permintaan tarik pada dasarnya persis seperti yang kami inginkan sejauh ulasan kode dan diskusi fitur). Kami menemukan hub alat oleh defunkt yang memiliki fitur kecil yang keren untuk dapat mengubah masalah yang ada menjadi permintaan tarik, dan secara otomatis mengaitkan cabang Anda saat ini dengannya.

Saya bertanya-tanya apakah itu praktik terbaik untuk meminta setiap pengembang di organisasi melakukan fork repositori organisasi untuk melakukan perbaikan fitur / bug / etc. Ini tampak seperti alur kerja yang cukup solid (seperti, pada dasarnya apa yang dilakukan oleh setiap proyek open source di github) tetapi kami ingin memastikan bahwa kami dapat melacak masalah dan menarik permintaan dari SATU sumber, repositori organisasi.

Jadi saya punya beberapa pertanyaan:

  1. Apakah pendekatan fork-developer sesuai untuk kasus ini? Sepertinya itu bisa sedikit berlebihan. Saya tidak yakin bahwa kami memerlukan garpu untuk setiap pengembang, kecuali jika kami memperkenalkan pengembang yang tidak memiliki akses push langsung dan membutuhkan semua kode mereka ditinjau. Dalam hal ini, kami ingin melembagakan kebijakan seperti itu, hanya untuk pengembang tersebut. Jadi, mana yang lebih baik? Semua pengembang dalam repositori tunggal, atau garpu untuk semua orang?
  2. Apakah ada yang punya pengalaman dengan alat hub, khususnya fitur tarik-permintaan? Jika kita melakukan fork-developer (atau bahkan untuk pengembang yang kurang beruntung) akankah fitur tarik-permintaan hub beroperasi pada permintaan tarik dari repositori master hulu (repositori organisasi?) Atau apakah ia memiliki perilaku yang berbeda?

EDIT
Saya melakukan beberapa pengujian dengan masalah, percabangan, dan menarik permintaan dan menemukan itu. Jika Anda membuat masalah pada repositori organisasi Anda, maka fork repositori dari organisasi Anda ke akun github Anda sendiri, lakukan beberapa perubahan, gabungkan ke cabang master garpu Anda. Ketika Anda mencoba menjalankan hub -i <issue #>Anda mendapatkan kesalahan User is not authorized to modify the issue,. Jadi, ternyata alur kerja itu tidak akan berhasil.

Jim Rubenstein
sumber

Jawaban:

6

Apakah pendekatan fork-developer sesuai untuk kasus ini? Sepertinya itu bisa sedikit berlebihan. Saya tidak yakin bahwa kami memerlukan garpu untuk setiap pengembang, kecuali jika kami memperkenalkan pengembang yang tidak memiliki akses push langsung dan membutuhkan semua kode mereka ditinjau. Dalam hal ini, kami ingin melembagakan kebijakan seperti itu, hanya untuk pengembang tersebut. Jadi, mana yang lebih baik? Semua pengembang dalam repositori tunggal, atau garpu untuk semua orang?

Tergantung pada skala tim Anda, saya kira. Saya dulu bekerja di tim kecil di mana kami hanya memiliki satu repo dan fitur mendapatkan cabang mereka sendiri dalam repo itu. Itu bekerja dengan baik untuk kita.

Namun, saya sekarang secara teratur berkontribusi pada proyek open source yang lebih besar di mana beberapa lusin orang memiliki akses ke repo pusat. Kami masih melakukan semua pengembangan besar dalam repo pribadi dan mengirimkan PR untuk fitur sehingga kode dapat ditinjau, meskipun perbaikan bug dapat didorong secara langsung. Repo utama hanya membawa master dan melepaskan cabang, menjaganya agar tidak berantakan. Cabang fitur dalam repo pribadi, sehingga mereka masih dapat dilihat oleh orang lain (membuat PR awal untuk mereka akan mengingatkan orang lain dalam tim yang sedang mengerjakan fitur sedang berlangsung). Saya dapat merekomendasikan alur kerja ini untuk proyek apa pun dengan lebih dari beberapa pengembang; satu-satunya downside adalah harus bekerja dengan beberapa remote.

Fred Foo
sumber
2

Pendekatan fork-per-developer adalah pendekatan yang sangat baik jika Anda menghargai ulasan kode dan kualitas kode. Hal yang menyenangkan tentang menggunakan permintaan tarik adalah bahwa hal itu mengalihkan tanggung jawab dari pengelola ke pengembang.

Pengembang ingin memasukkan kodenya ke cabang utama, dan meminta penyertaannya.

Ini konteks yang jauh berbeda dari model lama di mana orang melakukan, dan kemudian reviewer harus mengatakan kepada mereka "oh, hal yang Anda lakukan beberapa minggu lalu tidak begitu baik, perbaiki sekarang."

Kami menggunakan model ini di perusahaan kami. Permintaan tarik membuat permintaan kode layak, mendorong diskusi tentang kode orang lain dan umumnya membantu dengan kualitas kode, bahkan dengan pengembang yang pertama kali menentang alat baru. Saya merasa bahwa itu juga membuat orang mengambil ulasan kode lebih serius, karena peninjau harus secara aktif menggabungkan kode ke cabang utama, daripada hanya mengatakan 'ok' atau 'tidak ok' setelah kode sudah dikomit.

Wilbert
sumber
1

Saya tidak akan melakukan semua percabangan dan percabangan untuk semuanya. Itu adalah model yang baik untuk permata sumber terbuka di github, tetapi model Anda ada di dalam organisasi yang biasanya memiliki tingkat kepercayaan yang lebih tinggi tentang perubahan.

Poin utama dari kontrol sumber adalah Anda dapat melihat, mundur, mundur, dll. Perubahan. Melakukan banyak percabangan dan cabang dalam situasi Anda adalah IMHO yang terlalu banyak.

Saya akan memesan cabang untuk hal-hal seperti: peningkatan versi, mengubah salah satu teknologi, bekerja pada submodule selama 3 bulan yang memiliki sedikit kesamaan dengan basis utama.

Saya mungkin tidak bercabang sama sekali dalam suatu organisasi. Mode itu tampaknya lebih cocok untuk proyek-proyek sumber terbuka yang sifatnya berbeda dengan proyek-proyek in-house.

Saya akan mengalihkan fokus Anda ke pengujian dan ulasan kode. Apakah orang-orang menulis tes? Apakah mereka baik Apakah ulasan kode sudah selesai?

bermutu rendah
sumber
1
Kami tidak benar-benar menulis tes; kami meninjau kode masing-masing secara semi-sering. Melacak bug, dan implementasi solusi adalah yang paling penting bagi kami saat ini. Saya pikir semua orang akan setuju bahwa tes baik dalam teori, dan jauh lebih mudah untuk diterapkan pada proyek mulai dari nol; tapi kami punya banyak proyek warisan yang akan membutuhkan banyak waktu untuk menulis tes. Saya umumnya setuju tentang percabangan dan percabangan. Kami berasal dari HG sehingga memiliki cabang jangka pendek yang sebenarnya bukan bagian dari sejarah publik tampaknya aneh bagi kami, tetapi saya pasti melihat tujuannya.
Jim Rubenstein
Saya sebenarnya tidak melihat masalah dengan basis kode besar fungsi yang ada. Besok ketika Anda melakukan perbaikan besar, menulis tes, lalu untuk fitur berikutnya, menulis tes. Anda tidak harus kembali dan menulis yang lama. Anda hanya perlu mulai menulis yang baru. Lakukan cukup dan ada kemungkinan besar Anda akan menulis tes terlebih dahulu. Itulah pengembangan perangkat lunak profesional dari perangkat lunak yang diperhitungkan.
Junky
btw, secara pribadi saya menggunakan git dan menemukan fakta bahwa ia memiliki repositori lokal, sebagai lawan svn mengatakan di mana Anda melakukan langsung ke remote (tanpa push / pull) membantu saya mendapatkan sesuatu yang bekerja secara lokal terlebih dahulu. Lebih mudah karena saya masih bisa menambahkan dan melakukan tanpa dorongan akhir sampai saya siap.
Junky
Kecuali jika Anda menggunakan tampilan dinamis ClearCase (yang, jika Anda pernah mencoba, Anda akan tahu adalah PITA untuk digunakan), Anda forking untuk semuanya, karena setiap checkout benar-benar garpu, hanya satu yang dalam sistem kontrol versi terpusat tidak dapat mengandung beberapa revisi. Dalam sistem terdesentralisasi dan terdistribusi (git adalah satu) ia dapat dan merupakan garpu biasa.
Jan Hudec