Pertama, saya menyadari bahwa banyak pertanyaan telah diajukan tentang VCS sebagai pengembang tunggal, tetapi seringkali terlalu luas. Ini hanya menyangkut percabangan, dan masih telah ditandai sebagai duplikat ... duplikat yang seharusnya, sekali lagi, ditandai sebagai duplikat lain dari pertanyaan lain yang terlalu luas dan tidak berkaitan dengan percabangan secara khusus. Begitulah pertanyaan saya unik.
Apa keuntungan, jika ada, menggunakan percabangan sebagai pengembang solo? Saya sering melihatnya merekomendasikan bahkan dalam konteks solo-dev, tetapi sejauh yang saya bisa lihat, selain menggunakan trunk 'master' untuk pengembangan, dan bercabang untuk bekerja, kode siap-rilis, saya tidak melihat bagaimana Saya bisa memanfaatkan kekuatan percabangan (misalnya, untuk memisah-misah fitur baru) tanpa terlalu menyulitkan seluruh proses pengembangan.
sumber
Jawaban:
Keuntungannya kebanyakan sama dengan kelompok pengembang. Dengan menggunakan cabang master yang selalu siap dirilis, dan cabang fitur untuk mengembangkan fitur baru, Anda selalu dapat melepaskan master. Temukan bug penting saat mengerjakan fitur? Beralih cabang, perbaiki, lepaskan, beralih kembali dan terus berkembang.
Atau mungkin ini adalah proyek hobi dan Anda hanya suka sedikit bisa bekerja pada fitur ini dan sedikit itu, karena suasana hati menyerang Anda. Anda pada dasarnya meniru tim banyak orang dengan mengiris waktu.
Percabangan implisit yang dilakukan DVCS pada klon berarti bahwa cabang formal pada repositori otoritatif lebih sedikit tentang mengoordinasikan orang dan lebih banyak tentang mengoordinasikan arah pembangunan, dan bahkan satu orang dapat melakukan lebih dari itu.
sumber
Pembangunan jangka panjang
Bercabang untuk tim satu orang akan berguna untuk fitur pengembangan jangka panjang yang jika tidak cocok dengan siklus rilis Anda.
Anda bisa mengambil cabang untuk perubahan rentang multi-bulan dan masih bisa mendorong perbaikan bug apa pun sehari-hari atau perubahan dari cabang utama Anda secara berkala.
Ini memiliki keunggulan dibandingkan 'sakelar' dalam satu cabang karena cabang utama Anda selalu dalam kondisi yang dapat digunakan dan Anda dijamin bahwa tidak ada dalam fitur yang berjalan lama yang berdampak pada kode lain yang telah diuji sebelumnya.
Fitur eksperimental
Cabang juga bisa berguna untuk fitur yang mungkin ingin Anda prototipe, tetapi mungkin tidak pernah membuatnya menjadi kode yang Anda gunakan. Melengkapi ini pada cabang yang akhirnya saya buang berarti Anda tidak pernah mencemari basis kode utama Anda secara tidak perlu.
sumber
Saya menggunakannya untuk pemeliharaan situs web kritis. Saya adalah satu-satunya pengembang namun saya memiliki cabang master, mengembangkan dan menerbitkan.
Proses kerja saya untuk pengaturan situs terlihat seperti ini:
Buat cabang utama yang bisa diterapkan. Lakukan komit awal.
Checkout mengembangkan cabang. Jangan lakukan apa pun, kembangkan fungsi sebagai buffer uji untuk bergabung ke master.
Cabang masalah pemeriksaan. Buat kode untuk masalah Anda, setelah selesai, tarik untuk dikembangkan, lihat apakah ada masalah, gabungkan konflik dll ... perbaiki itu.
Ketika masalah yang cukup digabungkan ke dalam pengembangan untuk rilis dan pengembangan telah diuji untuk stabilitas, tarik berkembang menjadi master.
Dengan begitu Anda mendapatkan koleksi pengujian lengkap dalam pengembangan, di mana Anda dapat menguji stabilitas, masalah, dll ... tanpa harus mengambil risiko menyakiti Guru dan harus membatalkan komitmen jika itu berbahaya.
Juga, dengan menggunakan masing-masing cabang untuk melakukan, Anda dapat "meninggalkan" pekerjaan yang sudah Anda lakukan, memulai sesuatu yang baru untuk memperbaiki masalah yang lebih mendesak dan menyelesaikannya lebih awal.
Dalam kehidupan nyata saya biasanya memiliki satu cabang masalah, dan menarik yang berkembang dan kemudian menjadi master. Kadang-kadang itu membosankan, tetapi setiap dua bulan sekali setidaknya saya harus meninggalkan pekerjaan hanya dengan topi karena seseorang mempunyai ide bahwa saya harus membuat RightNow ™ dan dengan cara itu saya dapat dengan cepat beralih kembali ke keadaan dasar, menjadikannya hal yang penting. dan kemudian setelah itu melanjutkan keberadaan saya. Terutama dengan proyek-proyek besar yang membutuhkan waktu beberapa minggu, ini adalah hal yang luar biasa sehingga saya dapat dengan cepat berganti cabang.
Pertimbangkan skenario ini: Anda selalu bekerja di cabang utama dan Anda memiliki AwesomeCodeThing ™ dalam karya-karya yang membuat cabang Master Anda dalam operasi jantung terbuka dan YugeBug ™ muncul yang perlu diperbaiki segera jika tidak, ribuan pengguna akan mengeluh kepada Anda tentang BigProblems ™
The satu-satunya cara untuk dengan cepat menyelesaikan masalah Anda dalam skenario seperti itu,
Jika Anda menggunakan cabang:
sumber
Cabang membuat lebih mudah untuk bekerja pada banyak fitur sekaligus, yang bisa sangat membantu ketika prioritas berubah selama proyek.
Katakanlah Anda memutuskan suatu fitur yang lebih penting sekarang. Mungkin Anda perlu menambal bug penting dalam sistem live. Anda dapat bekerja dengan klien pada beberapa fitur selama periode waktu yang panjang dan mungkin ingin mendemonstrasikan kemajuan masing-masing fitur secara terpisah. Mungkin Anda baru saja membaca tentang eksploitasi nol hari yang buruk dan ingin membahasnya sebelum kata klien membacanya.
Jika Anda menggunakan cabang untuk setiap fitur / perbaikan terbaru, biasanya lebih mudah, lebih bersih, dan lebih cepat untuk mengisolasi dan menggunakan modifikasi ini daripada menggunakan cabang tunggal untuk semuanya. Ini berlaku baik Anda adalah pengembang tunggal atau bagian dari tim.
Adapun proses yang sebenarnya, saya menemukan aliran git bekerja dengan baik. Lembar contekan git flow Daniel Kummer adalah sumber yang bagus, perlu dilihat bahkan jika Anda tidak menggunakan git.
sumber
Seperti yang disebutkan oleh poster lain, keuntungannya hampir sama dengan bekerja dalam tim: Kemampuan untuk secara mandiri mengembangkan dan menguji fitur, mempertahankan cabang utama yang terpisah untuk perbaikan terbaru / penyebaran produksi, percobaan.
Bagi saya pribadi, saya biasanya cenderung bekerja di master jika saya tahu area yang saya kerjakan dengan baik, itu hanya menambah overhead ke cabang karena saya hanya akan menggabungkan mereka.
Namun, jika saya memiliki salah ragu-ragu tentang perubahan saya membuat saya akan cabang dan hanya PR / menggabungkan sekali cabang berperilaku seperti yang diharapkan dan umumnya sepenuhnya diuji. Dengan begitu, jika saya menemukan masalah yang memutar balik adalah tindakan terbaik, itu adalah satu komit daripada seluruh seri (saya tidak pernah bisa mengingat sintaks untuk mengembalikan serangkaian komit tapi satu saja mudah).
sumber