Apache Subversion is a centralised version control system that tracks changes to files and directories over time. One repository holds the authoritative history; clients check out a working copy, edit it, and commit changes back. Every commit produces a new global revision number that applies to the whole repository, which is why an SVN revision is a meaningful, orderable label for the entire tree — something no per-file or per-branch scheme gives you.
Subversion versions directories as well as files, and that single design choice explains most of its behaviour. Branches and tags are not special objects; they are cheap server-side copies inside the repository, which is why the trunk/branches/tags layout is a convention rather than a feature. Properties attach metadata to versioned items — svn:ignore, svn:externals, svn:eol-style, svn:mime-type, svn:needs-lock — and merge tracking is itself recorded in a property, svn:mergeinfo. Subversion supports both concurrency models: copy-modify-merge for text, and lock-modify-unlock for binary assets that cannot be merged at all.
Operationally, Subversion is a server product. It runs over svnserve or as an Apache httpd module with mod_dav_svn, stores data in FSFS, and is administered with a real toolkit — svnadmin, svnlook, svndumpfilter, svnrdump and svnsync — plus hook scripts that enforce policy at commit time. Repository layout, path-based authorisation, replication and backup are the parts that decide whether an SVN estate stays healthy for a decade or becomes the thing nobody dares touch.
Why this skill matters now
Subversion did not disappear when Git won the greenfield argument. It persists exactly where its properties still win: repositories holding tens of gigabytes of binary assets, regulated environments that require server-side path-based authorisation rather than all-or-nothing clone access, and long-lived product lines where a single monotonic revision number is embedded in build systems, defect trackers and audit trails.
That creates two kinds of demand, and both are underserved. The first is operational: someone has to run these repositories — hooks, path-based authorisation, mirrors, dump and load, FSFS packing, backup that actually restores. The people who set them up have frequently moved on, and the knowledge went with them. The second is migration: moving history to Git without losing branch and tag structure, author identity, or the ability to answer an audit question about revision 41,207.
There is also a correctness dimension. Merge tracking, peg versus operative revisions, reintegration and subtree mergeinfo are genuinely subtle, and teams that treat Subversion as 'Git with worse commands' generate history that later resists both merging and migration.