Apache Subversion facts for kids
![]() |
|
Original author(s) | CollabNet |
---|---|
Developer(s) | Apache Software Foundation |
Initial release | 20 October 2000 |
Stable release(s) | |
Written in | C |
Operating system | |
Type | Revision control |
License | Apache-2.0 |
Apache Subversion, often called SVN, is a special computer program. It helps people keep track of changes to files. Think of it like a "time machine" for your computer files!
Software developers use SVN to manage different versions of their source code. It's also used for web pages and other documents. This way, they can always go back to an older version if needed. SVN is free to use because it's open source.
Many big open-source projects have used Subversion. For example, the Apache Software Foundation and FreeBSD have relied on it. It was created by a company called CollabNet in 2000. Now, a global community of people helps build and improve it.
Contents
- History of Subversion
- What Subversion Can Do (Features)
- How Subversion Organizes Files (Filesystem)
- Special File Information (Properties)
- Working on Different Ideas (Branching and Tagging)
- Things That Can Be Tricky (Limitations and Problems)
- Who Works on Subversion (Development and Implementation)
- See also
History of Subversion
CollabNet started the Subversion project in the year 2000. Their goal was to create an open-source system similar to CVS. But they wanted to fix its problems and add new features.
By 2001, Subversion was good enough to manage its own code. This is called self-hosting. In February 2004, the first major version, 1.0, was released.
Later, in 2009, Subversion joined the Apache Incubator. This was a step toward becoming a full Apache Software Foundation project. On February 17, 2010, it officially became an Apache project.
What Subversion Can Do (Features)
Subversion has many useful features for managing files:
- Safe Changes: When you save changes, Subversion makes sure they are complete. If something goes wrong, your files won't get messed up.
- Tracks Everything: It keeps track of changes to folders and special file information. You can move or copy files and folders easily. All their past changes are remembered.
- Handles All Files: Subversion works well with all kinds of files, including binary files like images or videos. It saves space by only storing the differences between versions.
- Network Access: You can access your files over a network. It uses common internet ways like Apache HTTP Server or its own special "svn" protocol.
- Easy Branching: You can create "branches" (separate lines of work) very easily. This is like making a copy of your project to try out new ideas. It doesn't take up much space.
- Client-Server System: It's built to work with a client (your computer) and a server (where the main files are stored).
- Open Source: Subversion is free to use and change under the Apache License.
- File Locking: For files that are hard to combine, you can "lock" them. This stops others from changing them while you work.
- Permissions: You can set who is allowed to access different parts of your project.
- Works with Many Languages: Developers can use Subversion with programming languages like C#, Python, and Java.
- Smart Merging: If you make changes in a branch and want to add them back to the main project, Subversion can track these changes. This helps combine them automatically.
How Subversion Stores Files (Repository Types)
Subversion uses different ways to store your project's history. These storage areas are called "repositories."
Berkeley DB (Older Way)
The first versions of Subversion used something called Berkeley DB. This method had some small issues if the program crashed. It would need time to fix itself before you could use it again. This way of storing files is not used much anymore.
FSFS (Newer Way)
In 2004, a new storage system called FSFS was created. This system is often faster, especially with many files. It also uses less disk space. Since Subversion version 1.2, FSFS became the standard way to store new projects. FSFS stores files directly in your computer's file system. That's why it's called "FileSystem atop the FileSystem."
How to Access Your Project (Repository Access)
You can connect to a Subversion project in a few ways:
- Local Files: You can access files directly on your computer or a shared network drive.
- Web Access: You can use a web browser to access files over the internet. This uses `http://` or `https://` addresses.
- Special SVN Protocol: Subversion has its own special way to connect over the internet. This uses `svn://` or `svn+ssh://` addresses.
All these ways can work with both the older Berkeley DB and the newer FSFS storage types.
How Subversion Organizes Files (Filesystem)
Imagine the Subversion file system as having two dimensions:
- Path: This is the normal location of a file, like a folder address on your computer.
- Revision: This is the specific version number of the file.
Every time you save changes, Subversion creates a new "revision." It's like taking a snapshot of your entire project at that moment. Files are stored efficiently. The system only saves the changes, not a whole new copy of every file. This means it uses space based on how many changes you make, not how many versions you have.
Subversion uses "transactions" to make sure changes are saved correctly. A transaction is a set of changes that are either all saved or none are. This keeps your project history clean and correct.
Special File Information (Properties)
Subversion lets you add special notes or settings to files and folders. These are called "properties." They are simple name=value pairs of text. They are saved with the file, just like other changes.
Some common properties include:
- `svn:executable`: This makes a file runnable on computers like Unix or Linux.
- `svn:mime-type`: This tells Subversion what kind of file it is (like a text file, image, or video). This helps it show differences between versions correctly.
- `svn:ignore`: This lists files that Subversion should ignore. For example, temporary files you don't want to save.
- `svn:eol-style`: This helps manage how lines end in text files. Different operating systems (like Windows and macOS) use different ways. This property makes sure they match.
- `svn:externals`: This allows you to automatically include parts of other projects into your current one.
- `svn:needs-lock`: This property reminds you to "lock" a file before changing it. This is useful for files that are hard to combine if multiple people work on them at once.
Subversion also has properties for the revisions themselves:
- `svn:date`: The date and time when the changes were saved.
- `svn:author`: The name of the person who made the changes.
- `svn:log`: A message from the user explaining what changes they made.
Working on Different Ideas (Branching and Tagging)
Subversion helps you manage different lines of work. This is called "branching" and "tagging."
- Branching: A branch is like a separate copy of your project where you can work on new features or fix bugs without affecting the main project.
- Tagging: A tag is like a special label you put on a specific version of your project. It helps you easily find that exact version later.
In Subversion, creating a new branch or tag is done by copying a folder. This copy is very efficient and doesn't take up much space. It links back to the original to keep the history. You can later combine changes from a branch back into your main project.
Things That Can Be Tricky (Limitations and Problems)
Subversion is a powerful tool, but it has some tricky parts:
- Renaming Files: When you rename a file or folder, Subversion treats it like you copied it to a new name and then deleted the old one. This can sometimes cause confusion if other people are also making changes.
- No Easy History Deletion: It's hard to completely remove old records of certain data from the project's history.
- Local Copies: Subversion keeps extra copies of data on your computer. For very large projects, this can take up a lot of space. Newer versions (1.7 and later) improved this by using one central folder for these copies.
- Modification Times: Subversion doesn't save the exact time a file was last changed on your computer. Instead, it uses the time you saved it into Subversion. This can sometimes be different from what you expect.
- Centralized System: Subversion uses a "centralized" model. This means there's one main place where all the project files are stored. Some people prefer other systems where everyone has a full copy of the project.
- File Names: Subversion can sometimes have trouble with special characters in file names, especially on certain computer systems like macOS.
Who Works on Subversion (Development and Implementation)
CollabNet started Subversion, but now it's an independent open-source community. In 2010, it became an official project of the Apache Software Foundation.
Companies like WANdisco have also supported the project by hiring key developers. This helps keep Subversion growing and improving.
The Subversion community doesn't usually provide ready-to-use programs. Instead, volunteers create them. While there isn't an official graphical user interface (GUI) from the project, many other companies have made their own easy-to-use GUIs. An example is TortoiseSVN.
Developers are always working on new features. For example, the 1.7 release in 2011 made it faster to transfer files over the internet.
In 2002, there was a contest to design the Subversion logo. The current logo was chosen by votes from the community.
See also
In Spanish: Subversion (software) para niños
- List of version-control software
- Comparison of version-control software
- Comparison of Subversion clients
- List of software that uses Subversion
- TortoiseSVN