managing software product versioning with gitflow, vsts and atlassian sourcetree
TRANSCRIPT
ADMIR TUZOVIC | CTO & CO-FOUNDER | APP IMPACT
Managing software product versioning
with Gitflow, VSTS and SourceTree
AboutAdmir Tuzović
App Impact d.o.o. Sarajevo
CTO & Co-Founder
Conference speaker (mostly on MS tech):
MS NetWork, Sinergija, Windays, NTK, KulenDayz, MS Community, ATD, Tarabica,…
Agenda
Versioning
Repositories
GIT Flow
Tooling
Collaboration
VersioningDefining your own product versioning strategy.
Semantic Versioning (SEMVER) 2.0.0
Authored by Tom Preston-Werner
Inventor of Gravatar
Co-founder of GitHub
Available at: http://semver.org/
@mojombo
MAJOR.MINOR.PATCH
Backwards-incompatible API changes (also known as “breaking changes”).
Examples:
• Data migration required after update,
• Mobile apps must be re-published to marketplaces,
• 3rd party libraries / systems must be updated to work,
• User interfaces have been changed/moved significantly,
• Security model has been redesigned, …
Must dos:
• Plan carefully,
• Test thoroughly,
• Backup,
• Prepare rollback,
• Announce downtime,
• Pray (or at least pretend to)!
MAJOR.MINOR.PATCH
New features that are backwards-compatible.
Examples of non-breaking changes:
• New reports on administration,
• Additional data on service methods (i.e. short description on something),
• New non-required columns on database tables, …
External apps / libraries / systems SHOULD be updated to take advantage of new
features but are NOT REQUIRED to do so.
MAJOR.MINOR.PATCH
Backwards-compatible bug fixes.
Examples:
• Hotfix (critical fix that was supposed to be delivered yesterday),
• Next feature release will take some time and clients are asking for a small non-
functional fix such as translation improvement or UI element margin change,
• Minor improvements to “keep things happening”, …
RepositoriesWhere to keep your code?
Repositories Deathmatch
Private repos Public repos ×
Free tier Up to 5 users
Unlimited public repos Unlimited private repos
Unlimited users
Unlimited public reposNo private repos ×
Up to 5 users
No public repos ×
Unlimited private repos Small teams tier $2 USD / user / month
Unlimited public repos Unlimited private repos
$9 USD / user / month
Unlimited public repos Unlimited private repos
$3 USD / user / month
No public repos ×
Unlimited private repos Unlimited number of free users
with active MSDN subscriptions.
GitflowWhen two branches are not enough.
What is Gitflow?
Not “another GIT”.
GIT branching model.
One approach of implementing product versioning
workflow with GIT DVCS.
Read more:https://www.atlassian.com/git/tutorials/comparing-workflows
http://nvie.com/posts/a-successful-git-branching-model/
master VS develop
1. Everything begins with master branch
2. master can contain only production ready versions
3. develop is branched from master
4. develop contains latest integral version of code for
next planned release
5. When code is ready for release – develop is
merged to master with version tag
Deadly scenarios:
• You are in the middle of development of new
feature for release 1.2. and there is a critical bug on
1.1.
• Feature that you have been developing is canceled
but a lot of develop branch code has been changed
for it.
feature branches
1. Branched off develop
2. Merges back to develop on completion
3. Naming convention: feature/name-of-feature
Recommended for larger new product features.
Feature branch can live between several releases.
Usually stays locally and is not sent to origin (depends on time
required for completion and number of involved teams).
release branches
1. Branched off develop
2. Merges back to develop and master on
completion
3. Naming convention: release/version
4. Final preparations for production release.
5. No new features should be merged to release
branch.
6. When release branch is created, develop
branch should no longer be associated with this
product version, but instead with the next one.
7. Release version is determined as soon as
release branch is created.
hotfix branches
1. Branched off master
2. Merges back to develop and master on
completion
3. Naming convention: hotfix/name
4. Each hotfix branch should result with a new
(unplanned) product version.
Use it only for mission critical bugs.
Revise
ToolingHammer might be the best tool for nails but not so much for screws.
What are we using?
MODERN DEVELOPERS
CEO
NOT SO MODERN DEVELOPERS
CollaborationImproving team communication and client management.
Real-time collaboration systems aka
chats
Syntax highlighting ×External users (guests) (added recently)
Free tier Unlimited users Unlimited users
10.000 messages cap
No guests
Only for Office 365 users
Paid tier $3 USD / user / month
More features
$8 USD / user / month
Message cap removed
Guests per channel
Free = Standard
Why using chat systems:
• Faster and better team collaboration,
• No overlapping as with the e-mails,
• Improved communication with customers, …
Slack App: Jira Cloud
Available at:
https://slack.com/apps/A2RPP3NFR-jira-cloud
Whatever your CEO thinks
is best, it’s the best-est!
LFJ
If you have job offers, please
contact me.
ADMIR TUZOVIC | FORMER CTO | APP IMPACT
Thank you!