Whereas good versioning doesn't mean good development process, you can be sure that bad versioning means bad development process. Product version history can give you a good idea about a software development company quality and I thing it should be an important criteria if you're looking for outsourcing.
As an example, I will describe how we manage versions at ISLOG. Which I truly believe is far from perfect as we make improvement every month.

Most of our projects code is stored on SubVersion respositories. Those projects use the following version description:
[MAJOR].[MINOR].[SCM REVISION].[BUILD NUMBER]
Recently, we start to migrate projects to Git repositories that required changes to the version description (because of the Git distributed orientation):
[MAJOR].[MINOR].[MMDD].[BUILD NUMBER]
Where MAJOR number change rarely and MINOR number is incremented on each release.
Of course, as soon that a release is done, the SCM repository is tagged with that version to facilitate code browsing between versions when required.
The current development version is continuously built and tested thanks to continuous integration servers (Jenkins) which looks on code changes. Some native projects are multi-platform and have to pass successfully jobs on Windows CIS and Linux CIS before any release authorization.
Binaries files generated for tagged and development versions are stored on artifacts servers to be reuse independently on other projects. We mainly develop in .NET (C#) and C++ technologies. Maven is use for native projects, with Archiva as the repositories server. NuGet is use for .NET projects, but we have to do a lot of tricks to have snapshot repository equivalence (our hope is on the coming versions).
Every binary has a generated symbol file (pdb file).
That file is linked to the SCM revision and stored on a local Microsoft Symbols Server. Thus, if a project use an artifact as dependency and the developer want to debug the dependency code, symbol is retrieve automatically from the Symbols Server, code source revision retrieved from the SCM, and then displayed to the developer.
And the version regulate all this stuff.
0 comments:
Post a Comment