-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Detail of the advantages over trunk-based development with short-live feature branches would be great :) #1
Comments
@paul-hammant Thanks for the question! I like trunk-based development for continuous delivery pipelines for hosted services (like GitHub, and pretty much anything Google) as well as most simple projects (like this one!). In this model, you make small changes and deploy them quickly -- your first link indicates branches should only live for about 2 days at most -- and that becomes the new baseline on which everyone works. So the sweet spot for gitworkflow as opposed to trunk-based dev is probably mostly applications that need periodic releases:
For these cases, I don't think a trunk-based development approach provides the same level of flexibility. For example, with a gitworkflow approach a feature (or "topic") being worked on does not have to graduate if it is not yet release-level quality -- it can remain alpha or beta-quality code. Thoughts? |
Thanks for the response, Raman. I see TBD + BBA✝ + feature flags/toggles play to the same four bullets you're highlighting. Indeed, my biggest personal client achievement in 2005/6 was for Bank of America's GFX team in Chicago, doing a legacy rejevenation. I'd link to my more commercial materials on a diff domain but GitHub has rules about that. The 2-day SLFB's is what we recommend for TBD (and CI), yes. That'd even be true for a longer-to-achieve things, which is why I utilized (then documented) "✝Branch by abstraction" in the BofA mission. Some things are easier in Java though. At least with Intellij as the IDE (yes even back in 2005). Much easier than they are in the C/C++ world with any IDE, I'll claim. |
Hey @paul-hammant, I certainly agree with you regarding Java and IntelliJ IDEA -- amazing IDE and wonderful for refactoring. I've used VS pretty extensively and it doesn't hold a candle to IDEA. Feel free to send me a PM with the links, if you don't feel comfortable posting them here (I wasn't aware of any GitHub rules to that effect -- those types of guidelines would normally be set by repository owners). It was fun to read you were the co-creator of PicoContainer. I used to use Spring extensively (which was all setter injection in those days), and I credit PicoContainer with introducing and popularizing constructor injection, which is pretty much the norm for all DI frameworks now (including Spring). If a project is willing and able to implement BBA, and doesn't need the capabilities afforded by integration branches, then TBD is the simplest possible reduction of gitworkflow (topic-based development, with 0 integration branches). I submit, however, that integration branches are often useful -- gitworkflow by default has 2 of them ( |
Re-opening this because its probably worth talking a little about this in the main documentation. |
Ref: http://trunkbaseddevelopment.com/short-lived-feature-branches/
And GitHubFlow - https://guides.github.com/introduction/flow/ :)
The text was updated successfully, but these errors were encountered: