AnyLearn
All lessons
Programmingbeginner

Subversion: The Centralized Version Control Model

How Subversion (SVN) works and why it still exists in a Git world. Covers the centralized model, the central repository and working copy, global revision numbers and atomic commits, and the real reasons teams keep SVN: large binaries, path-based access control, and a single source of truth.

Updated · AI-authored, review-gated · how lessons are made

Not signed in: your progress and quiz score won't be saved.
Progress1 / 8

What version control does

A version control system (VCS) records the history of a set of files: every change, who made it, when, and why. It lets a team work on the same codebase without overwriting each other, roll back to any past state, and see exactly what changed between two points in time.

Git dominates today, but it is not the only model, and it was not the first to win widely. Apache Subversion (SVN), released in 2000 to replace the older CVS, was the default version control system for a large part of the industry through the 2000s. Understanding SVN is worth it for two reasons: a lot of long-lived code still lives in it, and seeing a second model makes what Git chose, and why, much clearer. This cursus covers SVN on its own terms.

Full lesson text

All 8 steps on one page, for reading, reference, and search.

Show

1. What version control does

A version control system (VCS) records the history of a set of files: every change, who made it, when, and why. It lets a team work on the same codebase without overwriting each other, roll back to any past state, and see exactly what changed between two points in time.

Git dominates today, but it is not the only model, and it was not the first to win widely. Apache Subversion (SVN), released in 2000 to replace the older CVS, was the default version control system for a large part of the industry through the 2000s. Understanding SVN is worth it for two reasons: a lot of long-lived code still lives in it, and seeing a second model makes what Git chose, and why, much clearer. This cursus covers SVN on its own terms.

2. Centralized versus distributed

This is the one distinction everything else follows from.

SVN is centralized. There is a single central repository on a server that holds the full history. Each developer checks out a working copy: the files at one revision, plus a little bookkeeping, but not the project's history. To commit, to see the log, or to branch, you talk to the server.

Git is distributed. Every developer clones the entire repository, history and all, onto their machine. Commits, branches, and history browsing happen locally; you sync with others by pushing and pulling.

That single choice explains the rest: SVN's need for connectivity, its single authoritative history, its global revision numbers, and its fine-grained server-side access control all fall out of keeping the one true repository on a server.

3. Two shapes of collaboration

Picture the two models side by side. In SVN, every developer's working copy connects to one central repository that holds all history; nothing is complete without the server. In Git, every clone is a full repository in its own right, and developers sync peer-style through a shared remote by choice, not necessity.

flowchart TD
  subgraph SVN["SVN: centralized"]
    R["Central repository (full history)"]
    W1["Working copy A"] <--> R
    W2["Working copy B"] <--> R
    W3["Working copy C"] <--> R
  end
  subgraph GIT["Git: distributed"]
    RemoteG["Shared remote"]
    C1["Full clone A"] <--> RemoteG
    C2["Full clone B"] <--> RemoteG
  end

4. The repository and the working copy

In SVN you start by pointing at a repository URL and running a checkout. That downloads a working copy: the current files plus a hidden .svn directory at the root that records which revision you have and what you have changed locally.

svn checkout https://svn.example.com/repos/acme/trunk acme
cd acme
# ... edit files ...
svn status      # what have I changed?
svn commit -m "Fix invoice rounding"

A few things to notice. The URL is central and authoritative; there is exactly one of it. The working copy is a snapshot at one revision, not the whole timeline, so browsing deep history means asking the server. And unlike Git's clone, checking out a huge project does not drag its entire past onto your disk, which matters when a repository holds years of large binary assets.

5. Global revision numbers

Here is a genuinely different design choice. In SVN, a revision is a number that names the state of the entire repository after a commit. The first commit is revision 1, the next is revision 2, and so on. Revision 4217 is a single, whole-tree snapshot of the project.

Git, by contrast, identifies each commit with a content hash like a3f9c2e, and there is no single increasing counter across the project. SVN's global integer has real ergonomic value: you can say "the bug appeared in r4217" and everyone knows exactly which repository-wide state you mean, in order, without ambiguity. Because the numbers are sequential, comparing revision N with N-1 gives you precisely the change that one commit introduced. The tradeoff is that this only works because there is one central authority handing out the next number.

6. Atomic commits

SVN commits are atomic: a commit either fully succeeds or has no effect at all. If you commit changes to twelve files and the connection drops midway, the repository does not end up with six of them applied. Nobody doing an update ever sees a half-finished commit.

This sounds obvious, but SVN's predecessor CVS did not guarantee it, and the lack caused real corruption and confusion. Atomicity is why a revision number can stand for a coherent whole-tree state: every revision is a complete, consistent point you can check out, build, and trust. It is one of the core reasons SVN was considered a serious upgrade over CVS when it arrived, and it remains a property teams rely on for reproducible builds tied to a revision.

7. Why teams still choose SVN

Git won the general case, but centralization is a feature in some settings, and that is why SVN persists. Reported adopters of SVN include large organizations such as LinkedIn, NASA, Siemens, and Citigroup, per a 2025 RhodeCode review of version control usage. Three reasons recur:

  • Large binary assets. Git stores full snapshots and struggles as binary blobs accumulate; SVN handles large, non-mergeable files more gracefully, which is why game studios and CAD/media teams favor it.
  • Granular access control. Because the repository is central, you can grant a contributor read or write access to specific subdirectories. Git's model is essentially all-or-nothing per repository.
  • A single source of truth. One authoritative repository, one linear revision history, one simple mental model, which some enterprise, government, and financial teams prefer.

SVN is a deliberate fit for these, not a legacy accident.

8. SVN and Git at a glance

A compact comparison to anchor the model before the next lesson digs into the daily workflow:

Subversion (SVN)Git
ModelCentralizedDistributed
Local copyWorking copy at one revisionFull repository clone
HistoryLives on the serverLives in every clone
Commit idGlobal sequential number (r42)Content hash (a3f9c2e)
Offline commitsNoYes
Access controlPer path, fine-grainedPer repository
Big binariesHandled gracefullyAwkward without extensions

Neither column is simply better. Git optimizes for distributed, offline, branch-heavy development; SVN optimizes for a controlled central authority with fine-grained access and large assets. Knowing both makes you effective wherever the code actually lives. Next: the day-to-day SVN commands.

Check your understanding

The lesson ends with a 5-question quiz. Take it in the player above to see your score.

  1. What is the defining architectural difference between SVN and Git?
    • SVN is centralized with one server repository; Git is distributed with a full copy in every clone
    • SVN cannot track file history; Git can
    • SVN only works for small text files; Git only works for binaries
    • SVN has no commits; Git introduced them
  2. In SVN, what does a working copy contain after checkout?
    • The complete history of the entire project
    • The files at one revision plus local bookkeeping, but not the full history
    • Only a link to the server with no actual files
    • Every branch and tag ever created, locally
  3. What does a global revision number like r4217 name in SVN?
    • A single developer's local branch
    • The state of one file only
    • The state of the entire repository tree after that commit
    • A random content hash with no ordering
  4. Why does the guarantee of atomic commits matter?
    • It makes commits faster than Git in all cases
    • A commit fully succeeds or has no effect, so no one ever sees a half-applied change
    • It lets developers commit while offline
    • It removes the need for a central server
  5. Which scenario most favors SVN over Git?
    • A distributed open-source team that commits frequently while offline
    • A studio managing large binary assets that needs per-directory access control and one source of truth
    • A solo developer wanting fast local branching
    • A project that must be fully cloned onto every laptop

Related lessons

Programming
intermediate

Canary Releases: Deciding With Evidence Instead of Nerve

A canary release sends a slice of real traffic to a new version and asks whether it is healthy. This lesson covers what to measure, why comparing the canary against the current version beats comparing against history, the statistics problem that makes small canaries weak evidence, and how automated promotion and rollback turn a judgement call into a rule.

7 steps·~11 min
Programming
intermediate

Why Deploys Break Things, and the Strategies That Answer It

Deploying is the moment a working system is replaced by a different one while people are using it. This lesson covers what actually goes wrong at that moment, the research finding that shipping fast and shipping safely are not opposites, and the four deployment strategies as answers to one question: how many users meet a bad version before you find out.

7 steps·~11 min
Programming
intermediate

Making Rollback Possible: The Changes That Cannot Be Undone

Every deployment strategy assumes you can go back, and that assumption is the one most often false when it matters. This lesson covers what actually makes a rollback work, the database migration pattern that keeps schema changes reversible, the one-way doors that no amount of tooling can undo, and how to tell which kind of change you are about to ship.

7 steps·~11 min
Programming
intermediate

Feature Flags: Separating Deploy From Release

A feature flag turns shipping code and exposing behaviour into two independent decisions, which is what lets a team deploy continuously while releasing on someone else's schedule. This lesson covers the four kinds of flag and their very different lifespans, the debt they accumulate, and the discipline that keeps a flag system from becoming untestable.

7 steps·~11 min