44 lines
2.6 KiB
Markdown
44 lines
2.6 KiB
Markdown
|
---
|
||
|
title: >
|
||
|
Ship, Show or Ask
|
||
|
pubDate: 2022-11-30
|
||
|
permalink: >-
|
||
|
archive/2022/11/30/ship-show-or-ask
|
||
|
tags:
|
||
|
- git
|
||
|
---
|
||
|
|
||
|
"Ship / Show / Ask" describes itself as a self-described modern branching strategy that combines the features of pull or merge requests with the ability to keep shipping changes.
|
||
|
|
||
|
Each change is either a "Ship", "Show", or "Ask".
|
||
|
|
||
|
## Ship
|
||
|
|
||
|
"Ship" changes are what I most commonly do with continuous integration and trunk-based development projects. Changes are committed directly to the main branch and shipped - assuming that the CI pipeline and any other automated checks pass. There is no blocking code review or pull request for "Ship" changes.
|
||
|
|
||
|
## Show
|
||
|
|
||
|
"Show" changes are made on a temporary branch instead of the mainline. This branch is then used to create a pull request which is closed once the CI checks pass without any code review.
|
||
|
|
||
|
Once the pull request is merged, the change is deployed, but the pull request is still available as somewhere to have feedback and conversation about the change.
|
||
|
|
||
|
This is something that I did today after starting to write a new feature by implementing the Decorator design pattern, and wanted others to be aware of this approach and ask any questions.
|
||
|
|
||
|
Another reason for this approach is if someone wants to ensure that the CI checks will pass before merging to mainline. Some Developers worry about breaking the CI pipeline with a trunk-based approach and blocking others, so want to know that the pipeline will continue to work and they aren't disrupting other team members.
|
||
|
|
||
|
## Ask
|
||
|
|
||
|
This is how I've worked on most projects before, and still with some clients where they want to review changes before merging, or maybe I want to have a discussion and review a change beforehand.
|
||
|
|
||
|
This is also common when new Developers join a project or need to change some code they haven't worked on before.
|
||
|
|
||
|
## Conclusion
|
||
|
|
||
|
I like the flexibility and balance of this approach. I prefer to work on "mostly ship" projects, and most of the show and ask conversations happen during pair or mob programming sessions.
|
||
|
|
||
|
Some of my clients where I work with teams are "mostly ask" and work in a more Git Flow-type way and want to review any changes before they're merged and deployed.
|
||
|
|
||
|
But if you're working on a "mostly ask" project and want to move to "mostly ship", then aiming to move to "mostly show" is a good intermediate step and a way to reduce shipping time or develop and build confidence in the CI pipeline before moving to trunk-based development and removing the manual review step.
|
||
|
|
||
|
The full article with more information is at https://martinfowler.com/articles/ship-show-ask.html.
|