Are there any so-called "version control systems" that also support actual release management / deployment ?
The mainframe shop I used to work for, had an automated release management tool that did not only control concurrent modifications to sources, but that also took care of running compilers, precompilers, database bind utilities etc. etc., making it our fully automated deployment tool as well.
My understanding is that "more modern" version control tools support only the source management part. Is that understanding correct ?
Version control has little to do with release management or deployment, so it makes sense that the VCSs don't try to do this as well.
What I've seen in this area are build or Continuous Integration (CI) servers. These listen to changes in the VCS, do a fresh checkout on any commit and then try to build everything. So they integrate the VCS and the build tools, collect the logs from them and present everything in a nice web UI.
This way, every tool can stay simple.
[EDIT] Added value of a CI server:
It can analyze the output of your build scripts and present an overview in a mail or a web page.
It makes sure that all tests are run after a commit. No more "but it runs for me".
Some of them support deferred commit (it will only commit changes to the VCS when all tests run)
It can run builds on several projects which depend on each other.
This is absolutely incorrect. Any modern version control tool supports both pre and post commit hooks, at which point you can run any code you want.
In subversion, we use the post-commit hook to deploy a copy of the app to the dev server every time a developer checks in code.
In our actual production servers, we have code that verifies and then deploys stable minor version tags as they are committed to the repo by the release managers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With