Do permanent branches kyun? Kyunki Gitflow "kya build ho raha hai" (develop) ko "kya live hai" (main) se alag karta hai. release/* branch ek buffer hai jahan sirf bug fixes allowed hain — koi nayi features nahi — taaki ek release stabilize ho sake jabki develop pe nayi feature work jaari rahe.
Yahaan Newton's laws nahi likhe ja sakte, lekin ek model zaroor hai. Maano conflict-causing changes shared branch pe rate λ (changes/day) se aate hain. Ek branch jo T din jeeti hai, lagbhag itna drift karti hai:
drift(T)=λ⋅T(expected diverging changes).
Agar har diverging change mein independent probability p hai ki wo tumhare edits se overlap karega, to tumhara merge conflict-free hone ki probability hai:
Pclean(T)=(1−p)λT.
Derivation (scratch se):n=λT independent changes mein se har ek tumhare lines se bachta hai probability (1−p) se. Independent events ⇒ multiply ⇒ (1−p)n. Substitute n=λT. ∎
Ye branch lifetime T mein exponentially decay karta hai — "merge early, merge often" ka mathematical heart yehi hai.
Recall Forecast-then-verify: pehle predict karo, phir reveal karo
Q: Gitflow mein, hotfix/* ___ se branch karta hai aur ___ aur ___ mein merge hota hai?
A: main se branch karta hai; mainaurdevelop dono mein merge hota hai.
Q: Conflict probability branch lifetime ke saath kyun badhti hai?
A: Lambi zindagi ⇒ shared branch pe zyada independent diverging changes ⇒ Pconflict=1−(1−p)λT badhta hai.
Q: Woh do technologies kaunsi hain jo trunk-based ko safe banati hain?
A: Continuous Integration + feature flags.
Recall Feynman: ek 12-saal ke bacche ko samjhao
Socho ek bada group EK shared poster pe draw kar raha hai. Gitflow aise hai jaise sab apni alag sheet pe poori tasveer banaate hain, phir kaafi baad poster pe chipkaate hain — lekin tab tak poster badal chuka hota hai aur glue fit nahi hota. Trunk-based aise hai jaise sab har kuch minute mein poster pe ek chota sticker lagate hain — choti additions, fix karna aasaan, aur agar sticker adhoora hai to ek flap se dhak do (feature flag) jab tak ready na ho. Thoda-thoda aur aksar karne se kabhi bhi giant gluing disaster nahi aata.
Gitflow hotfix ko develop mein bhi main ke saath merge kyun karna padta hai?
Warna develop se bani agli release bug wapas le aayegi (regression).
Trunk-based development define karo.
Sab ek shared branch mein kam se kam daily integrate karte hain, bahut short-lived branches ke zariye; releases trunk se cut hoti hain; adhoora kaam feature flags ke peeche chhupa hota hai.
TBD mein branch ki maximum recommended lifetime kitni hai?
Lagbhag ek din (hours se ~1 din).
Trunk-based development ko safe banane wali do technologies kaunsi hain?