Posts Tagged ‘version control system’

Version Control Software Can Help Ensure Success and Sanity

October 19th, 2011 by clucca

Back in the day when software development was more linear and proceeded at a more predictable pace with longer project timelines, version control wasn’t much of an issue. In most cases it wasn’t too hard to keep track of code changes, feature developments, and configuration files. If a developer – or even a team – created several different versions, multiple copies could be kept and, with some careful labeling and archiving, any version could be recreated or referred to later on.

But all that changed with the coming of Agile processes and the evolution of the multiple development teams approach, with different developers and teams branching off the main development trunk line to pursue new features or versions and then merging them back into the main line. If keeping multiple file copies could be prone to error in the old linear approach, you can imagine the danger looming with multiple teams working simultaneously. Suddenly, version control software seemed like a really, really good idea.

Now, of course, there are any number of version control software tools, ranging from very basic products such as open source CVS and Subversion, to some really sophisticated and comprehensive products that provide a variety of helpful software configuration management benefits. Regardless of the sophistication of the particular version control software being used, they all provide one critical benefit — the ability for multiple teams in multiple locations to work off the same source code base with minimal confusion and errors.

If you’re trying to sort out the features-and-benefits of version control software, here’s a short checklist of questions that can help you narrow down your choices:

  • Simplicity: Is your software development process modest enough for simple, text-based functionality or are you using a more complex, multiple team approach that would benefit from a graphic, browser-type tool?
  • Efficiency: Do you spend a lot of time analyzing and resolving merge conditions? If so, consider version control software with a visual tool that can help facilitate frequent integrating and merging codeline changes.
  • Collaboration: Do your developers work on code changes individually, with the need to occasionally share code with other developers or team members? Then consider version control software that includes the ability to both keep files in private workspaces and share them openly with other team members.
  • Version Control: Are your products subject to frequent, often substantial revisions that could be prone to errors without the ability to reproduce full version histories of all files and configurations?  Then look for version control software that provides time-stamped atomic transactions and an append-only database that prevents information from being lost and makes it easy to roll back code changes to a previous state.

Choosing the right version control software can make a major difference in your software development management, enabling you to get more robust, less error-prone products to market quicker and more efficiently.

Distributed Version Control: Balancing Flexibility and Scalability

October 6th, 2011 by clucca

You’re starting to hear more and more about distributed version control as some developers implement a new, decentralized version of distributed version control that enables developers to host a complete copy of the repository on their own computers without the need to be connected via a common network.

While this may be OK for smaller projects, there are some inherent risks for enterprise-wide large development projects. In fact, many large companies are loathe to allow their “crown jewels” – their source code – to be copied wholesale across a variety of developers’ machines. Enterprises tend to be genetically predisposed to keeping their files in one centralized location that they know is secure and backed-up.

For projects requiring enterprise scalability, there’s another way to handle distributed version control that’s more efficient, secure, and cost-effective. Developers working locally can simply work from a central server using the company LAN and remote developers can access the repository server through a WAN. If for some reason there’s a geographically-based performance issue, additional servers that replicate the central server can be installed at remote locations.

What’s great about this server-based model of distributed version control is that it nicely balances flexibility and scalability across the enterprise without sacrificing security and file integrity. Here at AccuRev, we’ve got a product called AccuReplica that handles replication and continuous integration for scaling our SCM system so that development teams using the server model can more easily collaborate on parallel development projects no matter where they’re located. In fact, replica servers can be added to handle, say, local and remote departments as well as build clients for easy, appropriate scalability based on your specific needs.

Some of the benefits of using a replicated server distributed version control system:

  • Scalability is immediate and easy – set-up involves installing a server and replicating primary server repository with a single command
  • Improves collaboration and communication between distributed development teams
  • Makes branching and merging easier because all teams, regardless of location, use the same process – no per-site branches
  • Administration remains centralized on the primary server – no need for costly resource duplication at each location

So with all the talk about distributed version control, if you’re a big enterprise project developer it’s good to know there’s a DVC server model that utilizes easy-to-setup replicate servers to provide scalable distributed version control across the enterprise without sacrificing flexibility or security.

If you’d like to learn more about the features and benefits of AccuReplica, download the free data sheet.

Version Control System – or How to End the Madness of Managing Multiple Revisions

August 30th, 2011 by clucca

Perhaps this is a recurring nightmare that makes you wake up screaming at night – you have multiple development teams working feverishly on making revisions to your most popular software line and suddenly you have NO IDEA where you are with the revised build and all the branching and merging has taken on a life of its own.

I have three words for you – version control system. Those three simple words can make all the difference between going down a nightmarish rat-hole of revisions and having a wildly successful, new-and-improved product launch. A version control system should be an integral part of your software configuration management (SCM) tool so that you and your team members can easily keep track of multiple revisions during parallel concurrent development. A good, comprehensive version control system is critical for development projects that include lots of codeline management and sharing between team members, especially when the teams are geographically distributed or located offshore.

So what makes a really good version control system for multiple revisions?

Well, it starts with stream-based architecture that takes the place of the traditional branch-and-label process. Because streams contain everything associated with a particular file, you can develop a rock-solid history of everything that happens during the revision process, creating an immutable audit trail that’s ideal for both internal audits and regulatory compliance. The comprehensive nature of stream-based architecture also makes rolling back to a previous file version faster, easier and a whole lot safer because the stream contains everything associated with that particular file.

Ideally, a good version control system provides a graphical dashboard that enables you to visually track all changes, making parallel and concurrent development easier and more intuitive. Graphical visualization also makes comparisons of different file versions safer, highlighting differences and minimizing the chance of error. And because visualization makes comprehension easier, merging codelines becomes simpler and quicker by reducing the amount of time spent analyzing and resolving merge conditions. As a result, branching and merging then become easier and more efficient, encouraging innovation while reducing time to release.

If you’re practicing agile software development, then you know the importance of multiple development teams and sharing. With an advanced version control system in place, sharing becomes much easier because developers can safely version in-progress code, store it in a private workspace, and share it with other team members when necessary. This means development teams can operate with greater flexibility and creativity, building features or entire codelines independently.

There’s a variety of different version control system tools available for managing multiple revisions, ranging from simple, basic freeware with minimal functionality to comprehensive systems that provide core version control functionality as well as sophisticated graphical configuration and codeline management. Depending on the size and scope of your development projects, there’s a version control system available that can meet your needs and end the multiple revision management madness.