When developing software for clients, we use subversion to safeguard intellectual property, track the evolution of a software product, efficiently handle multi-developer collaboration, and aid us with our continuous integration development cycle. By using subversion, it permits us to keep a working copy of the code base by committing all code to a central repository. This makes it easier for developers to create branches of the code to work on a new phase or to develop locally without adversely impacting other developers.
Tracking Evolution of a Project
Subversion is great for tracking the evolution of a software product. As each developer completes a unit of code, it gets committed into the subversion repository as a revision. These revisions are linked to our Trac ticketing system. So each ticket may be traced to specific revision changes to code. Likewise, while reviewing a specific piece of code, it can be tracked back to a change request. This provides a form of vital self-documentation of the project as it changes while not requiring extra time or resources.
Most companies in the industry will have many individuals working on different aspects of a software product. By using Subversion, it permits developers to work on different units of code by relying on subversion to merge changes into a single working copy. Even when there are two or more developers committing changes to the same file, subversion handles issues and conflicts gracefully. This is absolutely necessary when there are many people working on a single project. As developers work, changes from other developers merge into their working copy permitting them to test their changes against the group’s collective contributions before committing their work.
Continuous Integration Development involves integrating or submitting each developer's code early and often. As each commit is made and merged into the working copy, our continuous integration system runs automated documentation and tests. These include unit tests, selenium tests, doxygen code documentation, ScemaSpy database documentation, and even Sonar code complexity evaluations. Together, they help maintain a quality software product and help avoid regressions in the code. With defects detected early, they can be resolved before the build is released. This saves the client both time and money, while increasing user perception of product quality.