When should TAGs be preferred over BRANCHING and vice versa (in CVS)?
-
02-07-2019 - |
Question
I think title should be good enough.
Solution
Tags
Think of it as a snapshot in time. I want to be able to go back to that exact point. However, it will never change. You do not do a checkin on a tagged element.
Things that can get tagged:
- Releases (major and minor)
- Patches sent to customers
- Bug fixes
- Milestones (alpha, beta, etc...)
- Successful Daily build
Branches
The branch will have development performed on it (i.e. checkins).
You might create a branch from a tag (to do a bug fix for example).
You might create a branch to develop a feature and then merge it back to the main trunk.
You might create a branch for a release (minor or major).
The key point is that branches could be modified, and tags should not be.
OTHER TIPS
Tags should be used when you want to mark a milestone. The milestone could be as small as a daily build.
Branches should be used when you want to make changes independently from another branch/trunk.
Branching should also be used for major milestones, such as a releases. This depends on your branching strategy though.
Apropos other replies,
We use tags for minor point releases and branches for releases. So for example,
v1.0 <-- Branch
v1.0.1 <-- Tag
v1.0.2 <-- Tag
v1.1 <-- Branch
v1.1.1 <-- Tag
v1.1.2 <-- Tag
v1.2 <-- Branch
v1.2.1 <-- Tag
v1.2.2 <-- Tag
v1.3 <-- Branch
v1.3.1 <-- Tag
v1.3.2 <-- Tag
v1.4 <-- Branch
v1.4.1 <-- Tag
v1.4.2 <-- Tag
v1.5 <-- Branch
v1.5.1 <-- Tag
v1.5.2 <-- Tag
To use a Microsoft analogy, a Branch is a release of Windows (95, XP, Vista, etc) and a tag is a service pack.