Haruskah kolaborator di repositori Github pribadi setiap garpu repo?

14

Saya sedang mengerjakan proyek saat ini, dan kami memiliki kode sumber di repositori pribadi di Github, dengan masing-masing dari kami sebagai kolaborator.

Yang tidak jelas adalah bagaimana memisahkan masing-masing pekerjaan kita.

Apa yang saya pikir perlu kita lakukan adalah:

  1. Kita masing-masing perlu mengayun repositori
  2. Ketika kami siap untuk mendorong kode kami, kami kemudian mengirimkan permintaan tarik ke repo pemimpin proyek, yang pada saat yang sama dapat menggunakan ini sebagai kesempatan untuk melakukan tinjauan kode

Ketika datang ke repositori pribadi, apakah ini yang seharusnya digunakan untuk percabangan, atau apakah saya terlalu memperumit situasi?

JMK
sumber
1
Iya. Lakukan seperti yang Anda sarankan di sini, buat tim dan buat repo tim sebagai "master" repo. Semua orang membuat PR, termasuk pemimpin proyek.
RubberDuck

Jawaban:

7

Mengkloning repo ke mesin lokal pengembang sudah semacam forking. Jika setiap pengembang membuat repo di GitHub, ini hanya berfungsi untuk mempublikasikan kondisi kerja mereka saat ini.

Ini bisa tepat ketika ada master master repo, dan banyak kontributor yang tidak dipercaya dengan akses langsung ke repo itu. Ini sangat bagus untuk proyek-proyek sumber terbuka di mana setiap orang dapat berkontribusi dan mengeluarkan permintaan tarik yang kemudian ditinjau dan digabung oleh sekelompok pengelola inti. Menggunakan beberapa repo memberlakukan alur kerja berbasis permintaan-tarik.

Dalam tim kecil yang tepercaya, ini tidak perlu. Untuk mencegah orang yang berbeda saling menghalangi, strategi seperti Git Flow dapat diikuti: Setiap fitur kecil diimplementasikan pada cabang fitur yang terpisah. Ketika fitur selesai, itu digabung ke cabang master. Sebagian besar tim akan memasangkan ini dengan permintaan tarik atau ulasan kode oleh konvensi, tetapi cukup dipercaya untuk melewati itu jika sesuai. Sementara repo yang terpisah akan menyebabkan pengembang menerbitkan keadaan mereka saat ini pada repo yang bercabang tetapi terlihat oleh tim, dalam satu repo umum mereka akan mendorong perubahan mereka ke cabang fitur yang terpisah. Melakukan semua pengembangan pada master / trunk sangat tidak dianjurkan di sebagian besar alur kerja.

Perbedaannya akhirnya semata-mata tentang manajemen akses, dan tidak begitu banyak tentang alur kerja yang diterapkan. Anda dapat melakukan alur kerja berbasis permintaan-tarik dengan salah satu pengaturan. Dari perspektif mentah Git, tidak ada banyak perbedaan antara garpu dan cabang - salah satu pendekatan pada dasarnya berbagi sejarah proyek dan memungkinkan komitmen ditambahkan tanpa mempengaruhi cabang / garpu lain. Mempertimbangkan hal ini, akan jauh lebih baik untuk membagikan satu repo ketika berada dalam grup tepercaya dan tertutup.

amon
sumber
1
Hanya untuk dengan cepat menggemakan apa yang dikatakan @amon, saya telah bekerja di sebuah organisasi di mana setiap pengembang harus melakukan fork dari repo utama, yang kita semua merasa hanya langkah ekstra yang tidak perlu dan canggung. Saya tidak pernah mengerti mengapa itu diperlukan, tetapi tim ops kami tidak akan membahasnya. Prosesnya adalah: commit -> push -> pull request -> wait -> wait more -> upaya untuk mendapatkan perhatian tim ops pada IRC -> berjalan ke ops guys dan minta mereka untuk melihat permintaan pull -> tunggu -> kode terintegrasi -> ulangi.
DaveyDaveDave
1
Saya sangat mencegah alur kerja ini. Saya telah mengalami konflik penggabungan yang sangat buruk dengan dua pengembang yang mendorong langsung ke repo kanonik. Belum lagi, masih lebih baik untuk meminta orang lain meninjau kode Anda. Jauh lebih mudah untuk mengirimkan permintaan tarik jika Anda masing-masing memiliki garpu, dan ada satu repo proyek kanonik. Iya iya Saya tahu, itu tidak "didistribusikan". Masa bodo. Model garpu & PR bekerja lebih baik dalam pengalaman saya.
RubberDuck
@RubberDuck itu adalah poin yang bagus, saya curiga kasus saya jarang karena orang yang bertanggung jawab untuk permintaan tarik tidak dalam posisi untuk meninjau kode, yang membuatnya tidak berguna. Saya menyarankan alat khusus lainnya untuk review kode, seperti gerrit mungkin lebih efektif, tetapi saya mengambil pendapat Anda bahwa forking dapat (harus) bekerja dengan baik.
DaveyDaveDave
Masalahnya adalah siapa yang menentukan kapan fitur siap masuk ke master? Saya juga merasa berantakan bekerja dengan cabang; 100 cabang di satu repo dan kebanyakan dari mereka tanpa penghuni atau setengah jadi, mengapa mereka harus ada sama sekali jika mereka bahkan tidak siap untuk digabung? Manajemen akses 100% tentang alur kerja, jawaban ini hanya setengah bagus.
Rudolf Olah
5

Ini akan berhasil, atau Anda dapat menggunakan metode percabangan di mana masing-masing contrib memiliki cabang mereka sendiri, sehingga ketika tim setuju, digabung dengan master.

Margeaux Spring
sumber
Terima kasih, akan pergi dengan jawaban lain karena memiliki rincian lebih lanjut, tapi ya saya setuju :)
JMK