Easy Tutorial
❮ Tortoisesvn Intro Svn Create Repo ❯

SVN Introduction


Subversion (SVN) is an open-source version control system. This means that Subversion manages data that changes over time. This data is stored in a central repository. The repository is similar to an ordinary file server, but it remembers every change made to the files. This allows you to revert files to older versions or browse the history of changes.


Some SVN Concepts

The typical development process is as follows (assuming you have already checked out and have been working for a few days): Update (to get the latest code) --> Make your changes and debug --> Commit (so others can see your changes).

If two developers modify the same file simultaneously, SVN can merge their changes. SVN manages source code at the line level, so unless both developers modify the same line, SVN will automatically merge the changes. If the same line is modified, SVN will flag a conflict that requires manual resolution.

Main Features of SVN

Unlike CVS, which can only track the history of individual files, Subversion implements a "virtual" version control file system that tracks changes to entire directories over time. Both directories and files can be version controlled.

Unlike CVS, which limits file version records, Subversion supports operations that affect directory contents, such as copying and renaming. In Subversion, you can add, delete, copy, and rename files and directories. All new files start with a clean, new version.

A commit action is either fully updated to the repository or not updated at all. This allows developers to make and commit changes in logical intervals, preventing issues when partial commits succeed.

Each file and directory is associated with a set of attribute keywords and values. You can create and store any key/value pairs you want. These attributes are version-controlled over time, just like file content.

Subversion has an abstract concept of repository access, making it easy to implement new network mechanisms. Subversion can be embedded as an extension module in the Apache HTTP Server, providing advanced stability, collaboration, authentication, authorization, online compression, and repository browsing. There is also a lightweight standalone Subversion server that uses a custom communication protocol, easily tunneled via SSH.

Subversion uses a binary difference algorithm to represent file differences, treating text (human-readable) and binary (non-human-readable) files equally. Both types of files are stored in compressed form in the repository, and file differences are transmitted in both directions over the network.

The cost of branching and tagging does not have to be proportional to the size of the project. Subversion creates branches and tags by copying the project, similar to hard linking. These operations are small and take a fixed amount of time.

Subversion has no historical baggage; it is primarily a set of shared C libraries with a well-defined API. This makes Subversion easy to maintain and usable by other applications and programming languages.

Advantages Over CVS

❮ Tortoisesvn Intro Svn Create Repo ❯