In my group we are debating whether to version each one of our system components or not. While I find many talk about "how" to version each component (semver for example) I don't find enough reasoning to do that.
What I can think about is that If a version of some component appears to be faulty, we can always use an older, stable version of the component.
If we didn't keep updating a version before each merge, we should have rollback all the code changes to build the component in its previous state again instead of just using the stored old versioned component.
Is this the only reason? Are there more?
Please notice, the project is an testing automation project. Each module is a separate repository on Git.
Some of the components serves as infrastructure for others!
The automation runs on Jenkins.
Another wonder would be: Does it have the same effect like tagging the branch after any merge for quick rollbackl purpose?