So we have a code base that gradle builds into 3 different targets for 3 different clients that are from a business perspective completely separate. To simplify our release workflow, we have opted to keep the same versioning for all targets as less than 5% of changes are client-specific and we'd much rather keep track of one version than 3.
Let's say we make a change in the code base that only affects target A and released it for target A.
We have two options for B and C:
- Simply skip version, don't talk about it in release notes, it doesn't exist.
- It doesn't look very nice...
- I wonder if clients might might perceive this negatively
- Release version for all three targets:
- Release notes will have something very generic (that is also a lie): "fixes and improvements"
- Try to bundle changes so there's always something to talk about in releases
- For example, if I make a change that is A-specific, I bundle with it a feature or bug fix that is not target-specific so that the release is a legitimate update for all targets.
- Split the versioning into 3 and keep track of which version in A, B and C correspond to each other
- Last resort
Update: For business reasons, we can't talk about one client with the other clients because from a business perspective, the products are actually different.