September 12, 2017

What Is Subversion? SVN Explained

Version Control

Subversion (SVN) is one of many version control options available today. Here, we will provide a comprehensive overview of what subversion is, what is a SVN repository, and why you should use version control with SVN.

Read along or jump to the section that interests you the most:

➡️ Easily Switch to Helix Core

What Is Subversion (SVN)?

Subversion, also called SVN, is an open source version control system. Subversion (SVN) allows teams to look at previous file versions and track their changes over time. 

What Is Subversion Used For?

Subversion is used for maintaining current and historical versions of projects. Subversion is an open source centralized version control system. It's licensed under Apache. It's also referred to as a software version and revisioning control system.

Is Subversion (SVN) Still Used?

Subversion used to be one of the most popular systems. But SVN’s popularity is waning. However, there are still millions of lines stored in it. It even continues to be actively maintained, albeit by a small open source community.

Switch From Subversion (SVN) to a Better Tool

Many teams have switched from Subversion (SVN) to Helix Core. That's because Helix Core delivers greater speed, scale, and security than SVN can. See for yourself why SVN users switch. Try Helix Core for free for up to 5 users.

➡️ switch From SVN to Helix Core

What Is a Subversion (SVN) Repository?

A SVN repository is a collection of files complete with a full history of changes. 

📘Related Resource: More on SVN Repositories

Is Subversion a Distributed Version Control System?

SVN is actually a centralized version control system. It's different from distributed systems, like Git.

Subversion (SVN) Server Explained

Centralized version control means that the version history is stored in a central server. When a developer wants to make changes to certain files, they pull files from that central server to their own computer. After the developer has made changes, they send the changed files back to the central server.

How Does Subversion Work?

Now that we've answered the question, "What is SVN?" let's dive into the question, "How does Subversion work?" Here is an overview of how SVN works. 

SVN originally was designed as a command line interface. This means you would open your Terminal and type text commands.

For Subversion to work, the SVN setup needs two main elements:

  • The server, which has all versions of all source files
  • A local copy of the files, which is on your computer

The files on your computer are called working files. These are the files in which each user makes edits. Then, users commit their changes to the SVN server.

Each time a user commits a change, SVN manages and records it by creating a new version. Like most version control options, users typically work with the most recent version. But if an older version is needed, you can revert to an earlier version.

What Are Subversion Tools?

There are a number of Subversion tools and clients that are commonly used. TortoiseSVN, for example, is one of the most popular Subversion tools.

You might also consider tools for hosting Subversion, such as Helix TeamHub.

Should You Use Version Control with SVN?

Version control with SVN is popular. But is it the right choice for your team? Here are some challenges you'll face when doing version control with SVN. 

Subversion (SVN) Has a Tedious Branching Model

The most common complaint about SVN is its tedious branching model. Branches allow you to work on multiple versions of your code simultaneously.

What is SVN's branching model? In Subversion, branches are created as directories inside the server. Many developers dislike this directory structure. But the challenges don’t stop there.

SVN version 1.6 introduced a concept called tree conflicts. Tree conflicts are conflicts caused by changes in the directory structure, and they occur often. Since SVN doesn’t allow you to commit your changes when there’s a tree conflict, this adds complexity to implementing a branching strategy in SVN.

Subversion (SVN) Requires You to Be Connected to the Central Repo

In order to commit changes, Subversion requires that you’re connected to the central repository.

At this point, it’s good to repeat the ancient version control adage: "Commit early; commit often."

With this wisdom in mind, using SVN without a connection to the central repo is pointless. For example, if you code offline — during flights, for example — SVN doesn’t let you to commit to the central repo before you restore your connection.

If you have multiple repositories, it gets more complicated.

Subversion (SVN) Requires You to Resolve Conflicts Manually

Merging is the other big problem that developers often complain about with SVN. If you’re working with a history where a set of changes are made and committed, then another change is made (i.e., linear) and committed, the merge will be easy.

Things get complicated when you have two or more developers working on the same code base and you need to merge. In this case, SVN fails and the developers need to resolve the conflicts manually, which wastes hours of developer time.

So, Why Subversion?

SVN comes with many challenges. So why is SVN still used? There are 2 big reasons: cost and inertia.

  • Cost: SVN is open source, which means it’s “free.” Learn more about the real cost of SVN.
  • Inertia: Once a large code base is built up, it’s can be hard to switch VCS. SVN has been around since 2004, and the organizations who adopted it have millions of lines of code in it.

Outgrown Subversion?

If you’ve outgrown Subversion, Perforce has enterprise version control software that lets you scale without limits. That version control is Helix Core.

Helix Core is centralized version control with all the benefits of SVN without the challenges.

You'll get: 

  • A centralized server that creates a single source of truth.
  • Easy-to-use tools.
  • Efficient and powerful branching.
  • Easy to commit changes, even across multiple repositories.
  • Automatic resolution of merge conflicts.

Helix Core is perfect for collaboration, scalability, and flexibility. Try the full version of Helix Core. It’s free for up to 5 users and 20 workspaces.

➡️ switch to Helix Core


More on SVN: