Hal utama yang ingin ditangani oleh git-flow adalah kemampuan untuk berpikir tentang peran cabang tertentu, dan dari mana cabang itu berasal dan bergabung.
Idealnya, semua cabang bergabung kembali ke codeline tempat mereka bergabung. Ini biasanya merupakan gabungan dari garis utama (dalam git-flow inilah dev
). Cabang fitur cabang dan bergabung dari dev, lepaskan cabang cabang dan bergabung dari dev (dengan gabungan tambahan ke master
). Cabang hot fixes dan bergabung dari master (dengan tambahan itu menggabungkan kembali ke dev).
Setiap codeline bercabang dari dan bergabung kembali ke induknya. Codeline dapat menarik kode dari codeline lain kapan saja jika perlu.
Jika cabang dari cabang fitur adalah "Saya ingin menjelajahi cara memperbaiki masalah di cabang fitur" - baik-baik saja. Ini cabang dari cabang fitur, melakukan beberapa kode dan bergabung kembali ke cabang fitur (atau dibuang).
- cabang dari fitur
- jelajahi ide
- bergabung ke fitur
Apa yang ingin Anda hindari adalah sesuatu yang terlihat seperti:
- cabang dari fitur yang diperlukan
- bekerja pada kode
- bergabung dari dev setelah fitur yang diperlukan selesai
- verifikasi fungsionalitas (dan komitmen tambahan) di cabang fitur
- bergabung dengan dev
Alasannya adalah bahwa awal dan akhir tidak cocok - itu membuat sedikit lebih sulit untuk memahami apa ini dan itu. Bukan tidak mungkin, tetapi hanya membutuhkan sedikit waktu bagi seseorang untuk memahami perannya.
Namun, jika ini adalah fitur baru yang bergantung pada kode yang belum ditemukan di dev, alurnya harus:
- cabang dari dev
- bergabung dari fitur yang diperlukan
- bekerja pada kode
- bergabung dari dev setelah fitur yang diperlukan selesai
- verifikasi fungsionalitas (dan komitmen tambahan) di cabang fitur
- bergabung dengan dev
Perhatikan bahwa ini dimulai dengan cabang dari dev dan diakhiri dengan gabungan ke dev.
Semua yang dikatakan, mungkin hal terbaik untuk dilakukan adalah menghindari penggabungan dari satu fitur ke fitur lainnya. Cabang fitur tersebut, lakukan persiapan apa pun yang diperlukan ... dan tunggu.
- cabang dari dev
- bekerja pada kode
- bergabung dari dev setelah fitur yang diperlukan selesai
- verifikasi fungsionalitas (dan komitmen tambahan) di cabang fitur
- bergabung dengan dev
Ini memberikan set cabang dan kode yang paling stabil.
Sesuatu yang perlu dipertimbangkan untuk pekerjaan di masa depan adalah memiliki fitur untuk menerbitkan antarmuka yang diperlukan untuk interoperabilitas dengan fitur lain - bahkan jika kode implementasi tidak lengkap. Ini akan digabungkan ke dev, dan kemudian fitur yang diperlukan dapat bekerja dari antarmuka tersebut seperti halnya fitur masa depan. Ini kemungkinan akan memungkinkan fitur masa depan untuk maju lebih lanjut (pengkodean terhadap antarmuka, pengujian terhadap stubb yang mengimplementasikan antarmuka) daripada jika harus menunggu fitur yang diperlukan untuk bergabung ke dev.