Git bercabang dari cabang fitur untuk mengerjakan subfeature

12

Kami saat ini dalam situasi berikut, di mana cabang fitur telah bercabang untuk cabang sub-fitur (seperti, mengerjakan backend dan frontend hal-hal untuk fitur yang sama):

o 
|
o development
|\
| o feature-a
| |
| o
| |\
| | o feature-a-sub
| | |
| | |
|  \
|   o merged feature-a into feature-a-sub
|  /
o feature-a-sub merged into development
| |
| o feature-a with future work on it
|
o development

Seorang pengembang pertama-tama menggabungkan fitur-a ke dalam cabang fitur-a-nya agar mutakhir, dan kemudian menggabungkan fitur-a-subnya ke dalam pengembangan. Padahal fitur awal-cabang masih ada, dan belum selesai.

Dalam pandangan saya, ini menghasilkan masalah bahwa fitur-cabang sekarang dianggap usang, karena semua perubahan digabungkan menjadi fitur-a-sub dan kemudian ke pengembangan. Selain itu, pekerjaan terus berlanjut pada fitur-a, yang mengarah ke konflik penggabungan di masa depan dan banyak tenaga kerja manual.

Di mana kami mengambil belokan yang salah, dan bagaimana alur kerja yang tepat dengan lebih sedikit masalah?

pduersteler
sumber

Jawaban:

14

Seseorang seharusnya hanya bergabung ke dan dari cabang induk. Sebab feature-a-sub, ini feature-abukan development.

Penggabungan ke cabang kakek-nenek berarti bahwa alasan bahwa cabang induk diciptakan belum terpenuhi, dan ya, sebagaimana dicatat ini memang menciptakan masalah di masa depan di mana pengembangan terus berlanjut feature-adan developmentmengarah pada peningkatan divergensi dari baris kode dan lebih banyak konflik di sepanjang jalan.

Ini dengan asumsi yang feature-a-subtergantung pada kode di feature-a. Jika feature-a-subbukan independen feature-a, seharusnya tidak bercabang feature-asama sekali dan sebaliknya harus bercabang (dan digabung) menjadi development.

Jika feature-adiperlukan feature-a-subuntuk bekerja (tidak yakin itu bekerja sebagai feature-alanjutan tanpa penggabungan feature-a-subke dalamnya), dan feature-a-subindependen dari feature-a, feature-a-subseharusnya feature-bdengan cabang dari development, menggabungkan kembali ke development, dan kemudian baik gabungan dari developmentatau feature-b(jika seseorang tidak tidak ingin mengambil perubahan lain dari pengembangan) menjadi feature-a.

Alur kerjanya harus:

o                                        
|                                        
o development                            
|\                                       
| o feature-a                            
| |                                      
| o                                      
| |\                                     
| | o feature-a-sub                      
| | |                                    
| | |                                    
| | |                                    
| | o merged feature-a into feature-a-sub
| |/                                     
| o feature-a-sub merged into feature-a  
| |                                      
| o feature-a with future work on it     
|                                        
o development 

atau

o                                                  
|                                                  
o development                                      
|\                                                 
| \                                                
|  \                                               
|   o feature-a                                    
|\  |                                              
| b | feature-b                                    
| | |                                              
| | |                                              
| | |                                              
| b | feature-b complete                           
|/ \|                                              
o   o feature-b merged to development and feature-a
|   |                                              
|   o feature-a with future work on it             

Terkait - bacaan favorit saya tentang filosofi percabangan: Strategi Cabang SCM Lanjutan . Sementara buku putih ditargetkan untuk sistem kontrol versi terpusat, ide-ide di balik peran yang masing-masing cabang dapat ambil adalah penting untuk memastikan Anda memahami apa yang sedang terjadi dan dapat mempertimbangkan tentang apa yang harus dilakukan selanjutnya dengan cabang tertentu.


sumber