Best Source Code Management Software

The following is a comparison of version-control software. The following tables include general and technical information on notable version control and software configuration management (SCM) software. For SCM software not suitable for source code, see Comparison of open-source configuration-management software.

I’m old. Let’s get that established right up front. I have been around longer than sand, or at least that’s how it feels sometimes. You would think someone who has been in the industry for as long as I have would have a simple answer to a simple question. What is source code management? My reply? Well, that depends.

I could throw out the technical definition. It’s typically software that’s designed for source code management (SCM) or it’s a version control system (VCS) or a revision control system (RCS) and leave it at that. That doesn’t tell you much.

Remember, I established the fact that I am old. I come from System/34, System/38 and even mainframes before that. I grew up on these IBM midrange machines and I have been here for the old and new methodologies.

In the beginning, the earth cooled and the dinosaurs came. At that time, source control was simple. If you were going to change it, make a copy of it before you do. That was about it. What else did you need?

Of course that led to a few issues. Code regression being the big one. I followed the rules. I made a backup copy. I made all my changes. I put my code into production following the check list, and a day later, someone changing the same program did the same thing. The only problem was, they wiped my changes. They started with the same code as me. The code in production. We never saw the conflict until it was too late.

So we adapt. Making a copy isn’t enough. We need to have a common area so people can tell that someone is working on a program so we don’t regress. Well, that’s a little better. At least there’s some exposure to what’s going on, but it’s still not great. Think emergency change. Now what? Go around this? How do you notify and avoid regression then?

OK, remember we are evolving here. Let’s add a little more control, lets add a process we will call checkout. That will solve everything. We can even automate this process a little. Take a menu option, the system will write a record in a file saying you checked something out, and it can copy the source to a development area for you. Neat.

Now, because we have a file tracking checkouts, we can add conflict resolution. We can be sure an emergency change doesn’t create a regression in our code. We still need to jump through a lot of hoops to do this, like a second checkout, two working versions of source, a signoff on the conflict, a merge of code to avoid the regression and so on. It’s a bit of work but at least we are not losing code anymore.

If you’re old like me, you recognize the discussion above. It’s really IBM i-centric. It’s what we now call the pessimistic checkout model. Pessimistic because it locks source, and makes concurrent development difficult. Possible yes, but still, difficult.

Development Tools in a traditional IBM i environment

Considering Git & Open Source tools in a traditional IBM i environment? This paper describes the benefits of combining traditional and modern software development methods.

Imagine working on your application. You might have a project that’s developing the next release, one for ongoing day to day maintenance, one for a minor enhancement, a few bug fixes happening, and one for a new feature being added to the existing version.

That’s ok as long as the programs you are changing don’t overlap much. Wait, we said new release work is being done. Unless you are renaming everything you work on, I think there might be a lot of overlap in that project.

Source code management tools

In the scenario above, pessimistic checkout can work, but in the end, you’ll feel like a trained poodle after all the hoops you’ll need to jump through. If you enjoy being a trained poodle, you can stop reading here, if you’d like to hear about a better way? Read on.

I’m old. We established that already. I’m old but I can learn new tricks. The pessimistic checkout model above made you laugh if you are an open systems developer. You can’t even imagine how that process could work. It’s clunky at best and you can see how it would severely limit concurrent development.

For years we have been talking about becoming agile in the IBM i world. The term DevOps was coined. Marry development and operations using automation, that’s DevOps. It’s really about becoming agile. Most shops are looking at automation and are on the DevOps road. Modernize how you handle source as well. Adopt a new way, a new culture, unify your teams. It’s really possible.

ARCAD does pessimistic checkouts. It’s from the IBM i world. It’s old too, been around for 25+ years, but like me, it can learn new tricks. Old doesn’t mean stagnant. ARCAD is mature cutting edge technology that allows you to choose your source control system. Want to become truly agile? Put your IBM i code in a GIT repository. Start using a copy/modify/merge process instead of the pessimistic model described above. Did you know that’s possible?

It’s pretty easy to get your code in GIT. I have done a prior blog on that so I won’t cover it here again, but once your code is there, wow.

You create branches when you work. There is no checkout. You can have as many branches as you’d like. A branch for the new release, a branch for the new feature, a branch for a hotfix and so on. All the branching is done locally on the developers PC so it’s fast and easy. When you’re done developing, you push the branch up to a remote repository server. There, the change can be reviewed and accepted, and merged into the origin or main branch. During that merge, automatic conflict resolution is performed. If there is a conflict it is displayed and it can be dealt with easily. No regression of code happens.

Here is a typical workflow when using GIT for source control:

Down the middle is the remote server with the central repository. We have two developers in this example, Jessica and John. John starts by cloning the repository to his PC. He gets a full repository. That means he has everything he needs to develop and branch independently from the remote server. That means the operations are fast and you can work offline.

John starts his changes to PGM001 and does a local commit. Basically, he is saying I like that change, make it part of my local branch. Then Jessica clones the repository. She does not have Johns work yet. He has not pushed yet.

Jessica is a faster worker than John. She changes PGM001 does a local commit, likes what she sees and she does a push back to the remote repository. Her change is reviewed accepted and merged with the origin. That change is done.

John, being the good developer he is, is ready to push, but before he does, he performs a fetch. He is seeing if there are any changes since he started development. During that fetch he gets a conflict on PGM001. He merges Jessica’s change into his code and resolves any conflict. There will only be a conflict if they both changed the same lines of code.

John now pushes his change back to the remote server. He has included Jessica’s change. There is no regression. There was no hoop to jump through. Concurrent development happened on an IBM i source and nothing was lost. There were no bottlenecks in this scenario. That’s agile.

This methodology isn’t new to open systems developers. They have always worked this way. Us dinosaurs in the IBM i world are catching up. Take a look at this example:

In this example we have hotfixes, releases, features and development branches shown. This is more typical of a real world working shop. Yes, this source management solution scales up to match this level of complexity and it does it well. Each dot is a commit, each arrow is a fetch or a push. This is true flexibility in source management. You are not limited by a pessimistic checkout and development can flow easily.

So to get back on topic here, the question was, “What is source code management?”

My answer is, it depends. It depends on where you want to be and what your shop looks like. Are you modernizing? Then source code management will probably look like the GIT model talked about above. Do you do little development but need controls in place for auditing purposes? Then perhaps the pessimistic checkout model will work for you.

There’s a time and a place for both these models. You really need to decide what source code management means to you. You need to figure out where you are now, and where you want your shop to be in 5 years.

More and more I see people leaving the pessimistic model and moving toward modern source control. I feel fortunate that ARCAD is an open system, and allows me to use and learn these new methods and technologies. I like not being stuck in the past.

So, I may be a dinosaur in that I have been around a long time, but I sure don’t feel like one when I work on my IBM i. Using RDi, GIT, Jenkins, GitHub, and other modern tools keeps me feeling pretty young.

So to finally answer the question, what is source control…. It’s what you want it to be. You need to adopt the method that works for you and your team. You need to make that call. We can show you both ways to help you out.

Want to see Git used as source control on an IBM i? Book a demo today and we will setup a time to show you just that. You really will be amazed at how easy and flexible modern source control can be.

Or should I just say.. check it out??

About the author

Ray Bernardi, Senior Consultant, ARCAD Software

Ray is a 30-year IT veteran and currently a Pre/Post Sales technical Support Specialist for ARCAD Software, international ISV and IBM Business Partner. He has been involved with the development and sales of many cutting edge software products throughout his career, with specialist knowledge in Application Lifecycle Management (ALM) products from ARCAD Software covering a broad range of functional areas including enterprise IBM i modernization and DevOps. In addition, Ray is a frequent speaker at COMMON and many other technical conferences around the world and has authored articles in several publications on the subject of application analysis and modernization, SQL, and business intelligence.

Best Version Control Software Tools and Systems:

In this article, we are going to discuss the best version control/revision control tools that are available in the market.

Version Control Software VCS is also referred as SCM (Source Code Management) tools or RCS (Revision Control System).

Version control is a way to keep a track of the changes in the code so that if something goes wrong, we can make comparisons in different code versions and revert to any previous version that we want. It is very much required where multiple developers are continuously working on /changing the source code.

**********
=>> Contact us to suggest listing here
**********

What You Will Learn:

  • Top 15 Version Control Software Tools

Top 15 Version Control Software Tools

Let's Explore!

#1) Git

Git is one of the best version control tools that is available in the present market.

Features

  • Provides strong support for non-linear development.
  • Distributed repository model.
  • Compatible with existing systems and protocols like HTTP, FTP, ssh.
  • Capable of efficiently handling small to large sized projects.
  • Cryptographic authentication of history.
  • Pluggable merge strategies.
  • Toolkit-based design.
  • Periodic explicit object packing.
  • Garbage accumulates until collected.

Pros

  • Super-fast and efficient performance.
  • Cross-platform
  • Code changes can be very easily and clearly tracked.
  • Easily maintainable and robust.
  • Offers an amazing command line utility known as git bash.
  • Also offers GIT GUI where you can very quickly re-scan, state change, sign off, commit & push the code quickly with just a few clicks.

Cons

  • Complex and bigger history log become difficult to understand.
  • Does not support keyword expansion and timestamp preservation.

Open Source: Yes

Cost: Free

Click here for official Website.

#2) CVS

It is yet another most popular revision control system. CVS has been the tool of choice for a long time.

Features

  • Client-server repository model.
  • Multiple developers might work on the same project parallelly.
  • CVS client will keep the working copy of the file up-to-date and requires manual intervention only when an edit conflict occurs
  • Keeps a historical snapshot of the project.
  • Anonymous read access.
  • ‘Update’ command to keep local copies up to date.
  • Can uphold different branches of a project.
  • Excludes symbolic links to avoid a security risk.
  • Uses delta compression technique for efficient storage.

Pros

  • Excellent cross-platform support.
  • Robust and fully-featured command-line client permits powerful scripting
  • Helpful support from vast CVS community
  • allows good web browsing of the source code repository
  • It’s a very old, well known & understood tool.
  • Suits the collaborative nature of the open-source world splendidly.

Cons

  • No integrity checking for source code repository.
  • Does not support atomic check-outs and commits.
  • Poor support for distributed source control.
  • Does not support signed revisions and merge tracking.

Open Source: Yes

Cost: Free

Click here for official Website.

#3) SVN

Apache Subversion, abbreviated as SVN aims at to be a best-matched successor to the widely used CVS tool that we just discussed above.

Features

  • Client-server repository model. However, SVK permits SVN to have distributed branches.
  • Directories are versioned.
  • Copying, deleting, moving and renaming operations are also versioned.
  • Supports atomic commits.
  • Versioned symbolic links.
  • Free-form versioned metadata.
  • Space efficient binary diff storage.
  • Branching is not dependent upon the file size and this is a cheap operation.
  • Other features – merge tracking, full MIME support, path-based authorization, file locking, standalone server operation.

Pros

  • Has a benefit of good GUI tools like TortoiseSVN.
  • Supports empty directories.
  • Have better windows support as compared to Git.
  • Easy to set up and administer.
  • Integrates well with Windows, leading IDE and Agile tools.

Cons

  • Does not store the modification time of files.
  • Does not deal well with filename normalization.
  • Does not support signed revisions.

Open Source – Yes

Cost: Free

Click here for official Website.

#4) Mercurial

Mercurial is a distributed revision-control tool which is written in python and intended for software developers. The operating systems that it supports are Unix-like, Windows and macOS.

Features

  • High performance and scalability.
  • Advanced branching and merging capabilities.
  • Fully distributed collaborative development.
  • Decentralized
  • Handles both plain text and binary files robustly.
  • Possesses an integrated web interface.

Pros

  • Fast and powerful
  • Easy to learn
  • Lightweight and portable.
  • Conceptually simple

Cons

  • All the add-ons must be written in Python.
  • Partial checkouts are not allowed.
  • Quite problematic when used with additional extensions..

Open Source: Yes

Cost: Free

Click here for official Website.

#5) Monotone

Monotone, written in C++, is a tool for distributed revision control. The OS that it supports includes Unix, Linux, BSD, Mac OS X, and Windows.

Features

  • Provides good support for internationalization and localization.
  • Focuses on integrity over performance.
  • Intended for distributed operations.
  • Employs cryptographic primitives to track file revisions and authentications.
  • Can import CVS projects.
  • Uses a very efficient and robust custom protocol called netsync.

Pros

  • Requires very low maintenance
  • Good documentation
  • Easy to learn
  • Portable design
  • Works great with branching and merging
  • Stable GUI

Cons

  • Performance issues observed for some operations, most visible was an initial pull.
  • Can’t commit or checkout from behind the proxy (this is because of a non-HTTP protocol).

Open Source: Yes

Cost: Free

Click here for official Website.

#6) Bazaar

Bazaar is a version control tool that is based on a distributed and client-server repository model. It provides cross-platform OS support and is written in Python 2, Pyrex and C.

Features

  • It has commands similar to SVN or CVS.
  • It allows you to be working with or without a central server.
  • Provides free hosting services through the websites Launchpad and Sourceforge.
  • Supports file names from the entire Unicode set.

Pros

  • Directories tracking is supported very well in Bazaar (this feature is not there in tools like Git, Mercurial)
  • Its plugin system is fairly easy to use.
  • High storage efficiency and speed.

Cons

  • Does not support partial checkout/clone.
  • Does not provide timestamp preservation.

Open Source: Yes

Cost: Free

Click here for official Website.

#7) TFS

TFS, an acronym for team foundation server is a version control product by Microsoft. It is based on client-server, distributed repository model and has a proprietary license. It provides Windows, cross-platform OS support through Visual Studio Team Services (VSTS).

Features

  • Provides entire application lifecycle support including source code management, project management, reporting, automated builds, testing, release management and requirement management.
  • Empowers DevOps capabilities.
  • Can be used as a backend for several IDEs.
  • Available in two different forms (on-premises and online (known as VSTS)).

Pros

  • Easy administration. Familiar interfaces and tight integration with other Microsoft products.
  • Allows continuous integration, the team builds and unit test integration.
  • Great support for branching and merging operations.
  • Custom check-in policies to aid in implementing a steady & stable codebase in your source control.

Cons

  • Frequent merge conflicts.
  • Connection to the central repository is always required.
  • Quite slow in performing a pull, check-in, and branching operations.

Open Source: No

Cost: Free of cost for up to 5 users in the VSTS or for open source projects via codeplex.com; else paid and licensed through MSDN subscription or direct buy.

The server license can be bought for around $500 and the client licenses are also nearly the same.

Click here for official Website.

#8) VSTS

VSTS (Visual Studio Team Services) is a distributed, client-server repository model based version control tool provided by Microsoft. It follows the Merge or Lock concurrency model and provides cross-platform support.

Features

  • Programming Language: C# & C++
  • Changeset storage method.
  • File and Tree scope of change.
  • Network protocols supported: SOAP over HTTP or HTTPS, Ssh.
  • VSTS offers elastic build capabilities thru build hosting in Microsoft Azure.
  • DevOps enables

Pros

  • All the features that are present in TFS are available in VSTS in the cloud.
  • Supports almost any programming language.
  • Instinctive User Interface
  • Upgrades get automatically installed.
  • Git access

Cons

  • Signed revisions are not allowed.
  • The “work” section is not very well optimized for large teams.

Open Source: No, it is a proprietary software. But, free trial version is available.

Cost: Free for up to 5 users. $30/mo for 10 users. Also offers a lot of free and paid extensions.

Click here for official Website.

#9) Perforce Helix Core

Helix Core is a Client-server and distributed revision control tool developed by Perforce Software Inc. It supports Unix-like, Windows and OS X platforms. This tool is mainly for large-scale development environments.

Features:

  • Maintains a central database and a master repository for the file versions.
  • Supports all file types and sizes.
  • File-level asset management.
  • Maintains a single source of truth.
  • Flexible branching
  • DevOps ready

Pros

  • Git accessible
  • Lightning fast
  • Massively scalable
  • Easy to track change list.
  • Diff tools make it very easy to identify code changes.
  • Works well with the visual studio through the plugin.

Cons

  • Does not support interactive commits and external references.
  • Managing multiple workspaces is quite difficult.
  • Rollbacking changes is troublesome if its split across multiple change-lists.
  • UI is quite confusing for new users.

Source Code Control Tools

Open Source: No, it’s a proprietary software. But, free trial version for 30 days is available.

Cost: Obtainable as perpetual license and subscriptions; charges differ based on configurations and options.

Click here for official Website.

#10) IBM Rational ClearCase

ClearCase by IBM Rational is a client-server repository model based on software configuration management tool. It supports a lot of Operating systems including AIX, Windows, z/OS (limited client), HP-UX, Linux, Linux on z Systems, Solaris.

Features:

  • Supports two models i.e UCM and base ClearCase.
  • UCM stands for Unified Change Management and offers an out-of-the-box model.
  • Base ClearCase offers basic infrastructure.
  • Capable of handling huge binary files, a large number of files, and big repository sizes.
  • Allows branching, labeling, and versioning of directories.

Pros

  • Simple UI
  • Integrates with Visual Studio.
  • Handles parallel development.
  • ClearCase Views are very convenient as they allow to switch between projects and configurations as opposed to local workstation model of the other version control tools.

Cons

  • Slow recursive operations.
  • Evil Twin problem – Here, two files with the same name get added to the location instead of versioning the same file.
  • No advanced API

Open Source: No, it is a proprietary tool. But, free trial version is available.

Cost: $4600 for each floating license (detained automatically for a 30-minutes minimum for each user, can be surrendered manually)

Click here for official Website.

#11) Revision Control System

Revision Control system (RCS), developed by Thien-Thi Nguyen works on the local repository model and supports Unix-like platforms. RCS is a very old tool and was first released in 1982. It is an early version of VCS(Version Control System).

Features:

  • Was originally intended for programs, but, is also helpful for text documents or config files that often get revised.
  • RCS can be considered as a set of Unix Commands that permits various users to build and maintain program code or documents.
  • Allows revision of documents, committing changes and merging docs together.
  • Store revisions in a tree structure.

Pros

  • Simple architecture
  • Easy to work with
  • It has local repository model, so the saving of revisions is independent of the central repository.

Cons

  • Less security, version history is editable.
  • At a time, only one user can work on the same file.

Open Source: Yes

Cost: Free

Click here for official Website.

#12) Visual SourceSafe(VSS)

VSS by Microsoft is a Shared folder repository model based revision control tool. It supports Windows OS only.

It is intended for small software development projects.

Features

  • Creates a virtual library of computer files.
  • Capable of handling any file type in its database.

Pros

  • Fairly easy to use interface.
  • It lets a single user system to be assembled with fewer configurations when compared to any other SCM systems.
  • Easy backup process.

Cons:

  • Lacks many important features of a multi-user environment.
  • Database corruption is one of the serious problems noted with this tool.

Cost: Paid. Nearly $500 for each license or single license which is comprised of every MSDN subscription.

Click here for official Website.

#13) CA Harvest Software Change Manager

This is a revision control tool provided by CA technologies. It supports many platforms including Microsoft Windows, Z-Linux, Linux, AIX, Solaris, Mac OS X.

Features

  • Changes are made to a “change package”. Harvest supports both version control as well as change management.
  • Has a pre-defined lifecycle from Test to Production stages.
  • Fully customizable project environments. Project means ‘entire control framework’ in Harvest.

Open Source: No, this tool comes with Proprietary EULA License. However, a free trial is available.

Pros

  • Helps very well in tracking the application flow from dev to prod environments. The biggest asset of this tool is this lifecycle feature.
  • Deployment in a safe manner.
  • Stable and scalable.

Cons

  • Could be more user-friendly.
  • Merging feature could be improved.
  • Handling Polar Requests For Code Reviews Is challenging.

Cost: Not disclosed by the vendor.

Click here for official Website.

#14) PVCS

PVCS (an acronym for Polytron Version Control System), developed by Serena Software is a client-server repository model based version control tool. It supports Windows and Unix-like platforms. It provides version control of source code files. It is mainly intended for small development teams.

Features

  • Follows locking approach to concurrency control.
  • No built-in merge opera.tor but has a separate merge command.
  • Supports multi-user environment.

Pros

  • Easy to learn and use
  • Manages the file versions regardless of the platforms.
  • Gets easily integrated with Microsoft Visual Studio .NET and Eclipse IDEs.

Cons

  • Its GUI has some quirks.

Open Source: No, it is a proprietary software.

Cost: Not disclosed by the vendor.

Click here for official Website.

#15) darcs

darcs (Darcs Advanced Revision Control System), developed by The Darcs team is a distributed version control tool that follows merge concurrency model. This tool is written in Haskell and supports Unix, Linux, BSD, ApplemacOS, MS Windows platforms.

Features

  • Capable of selecting which changes to accept from other repositories.
  • Communicates with local and remote repositories through SSH, HTTP, email or unusually interactive interface.
  • Works on the concept of linearly ordered patches.

Pros

Best Source Code Management Tools

  • Has fewer and more interactive commands when compared to other tools like git and SVN.
  • Offers send system for direct mailing.

Cons

  • Performance issues related to merging operations.
  • Installation takes a long time.

Open Source: Yes

Cost: This is a free tool.

Click here for official Website.

*********************************

Few more Version Control tools which are worth mentioning are:

#16) AccuRev SCM

AccuRev is a proprietary revision control tool developed by AccuRev, Inc. Its main features include streams and parallel development, private developer history, change packages, distributed development and automated merging.

Code Management Systems

Click here for official Website.

#17) Vault

Code Management Process

Vault is a proprietary revision control tool developed by SourceGear LLC that works on CLI platform. This tool is the closest competitor to Microsoft’s Visual Source Safe. The backend database for Vault is Microsoft SQL Server. It supports atomic commits.

Click here for official Website.

#18) GNU arch

GNU arch is a distributed and decentralized revision control tool. It is a free and open source tool. This tool is written in C language and supports GNU/Linux, Windows, Mac OS X Operating systems.

Click here for official Website.

#19) Plastic SCM

Plastic SCM is a proprietary version control tool that works on.NET/Mono platform. It follows a distributed repository model. The Operating systems that it supports include Microsoft Windows, Linux, Solaris, Mac OS X. It comprises of a command-line tool, a Graphical User Interface, and integration with numerous IDEs.

This tool deals with big projects excellently.

Click here for official Website.

#20) Code Co-op

Code Co-op, developed by Reliable Software is a peer to peer revision control tool. It follows distributed, peer to peer architecture where it creates a replica of its own database on every machine involved in the shared project. One of its interesting distinguishing features is its inbuilt wiki system for documentation.

Click here for official Website.

Conclusion

Source Code Management Tools

In this article, we discussed the best version control software. As we have seen, each tool has its own distinguishing features, pros, and cons. Few of them were open source tools while others were paid. Some suit small enterprise model well while the others suit big enterprise.

What Is The Best Source Code Management Software

So, you need to choose the right tool as per your requirements, after weighing their pros and cons. For paid tools, I would suggest you to first explore their free trial versions before you buy.

**********
=>> Contact us to suggest listing here
**********

Source Code Management Process

Recommended Reading