Read all reviews
Our web development team uses Apache Subversion as one of our version control systems. A version control system is a critical tool for …
Used mainly as a collective tool for version tracking to ensure revisions are tracked by the dev team, and all maintain branches of our …
We used Apache Subversion to manage and control source code for our development team. Subversion helps to track, version, and manage …
We used to use Apache SVN for source code file versioning for all our software projects in the e-business department. Now we only use it …
Subversion is being used by our engineering team to manage the development code we write for the company.
In my organization, Apache Subversion (SVN) is used as a versioning software for some specific types of objects. It is always and only …
We used Subversion to manage a ColdFusion based software development project for a US Federal government contract. We were largely …
I have used apache subversion for a course that I have taken and also for a company that I intern for. It is used for collaborating …
Subversion used to be our main version control software before we started using GitHub. But after introduction of Git, we stopped using …
Leaving a video review helps other professionals like you evaluate products. Be the first one in your network to record a review of Apache Subversion, and make your voice heard!
Entry-level set up fee?
- No setup fee
- Free Trial
- Free/Freemium Version
- Premium Consulting / Integration Services
Would you like us to let the vendor know that you want pricing?
3 people want pricing too
Apache Subversion is a version control option that is free to download and open source under the Apache 2.0 license.
Apache Subversion was designed to be a full featured and better version of CVS. Its features include:
Apache Subversion was designed to be a full featured and better version of CVS. Its features include:
- Most CVS features - CVS is a relatively basic version control system. For the most part, Subversion has matched or exceeded CVS's feature set where those features continue to apply in Subversion's particular design.
- Directories are versioned - Subversion versions directories as first-class objects, just like files.
- Copying, deleting, and renaming are versioned - Copying and deleting are versioned operations. Renaming is also a versioned operation, albeit with some quirks.
- Free-form versioned metadata ("properties") - Subversion allows arbitrary metadata ("properties") to be attached to any file or directory. These properties are key/value pairs, and are versioned just like the objects they are attached to. Subversion also provides a way to attach arbitrary key/value properties to a revision (that is, to a committed changeset). These properties are not versioned, since they attach metadata to the version-space itself, but they can be changed at any time.
- Atomic commits - No part of a commit takes effect until the entire commit has succeeded. Revision numbers are per-commit, not per-file, and commit's log message is attached to its revision, not stored redundantly in all the files affected by that commit.
- Branching and tagging are cheap (constant time) operations - Branches and tags are both implemented in terms of an underlying "copy" operation. A copy takes up a small, constant amount of space. Any copy is a tag; and if you start committing on a copy, then it's a branch as well. (This does away with CVS's "branch-point tagging", by removing the distinction that made branch-point tags necessary in the first place.)
- Merge tracking. - Subversion 1.5 introduces merge tracking: automated assistance with managing the flow of changes between lines of development, and with the merging of branches back into their sources. The 1.5 release of merge tracking has basic support for common scenarios.
- File locking - Subversion supports (but does not require) locking files so that users can be warned when multiple people try to edit the same file. A file can be marked as requiring a lock before being edited, in which case Subversion will present the file in read-only mode until a lock is acquired.
- Symbolic links can be versioned - Unix users can place symbolic links under version control. The links are recreated in Unix working copies, but not in win32 working copies.
- Executable flag is preserved - Subversion notices when a file is executable, and if that file is placed into version control, its executability will be preserved when it it checked out to other locations. (The mechanism Subversion uses to remember this is simply versioned properties, so executability can be manually edited when necessary, even from a client that does not acknowledge the file's executability, e.g., when having the wrong extension under Microsoft Windows).
- Apache network server option, with WebDAV/DeltaV protocol - Subversion can use the HTTP-based WebDAV/DeltaV protocol for network communications, and the Apache web server to provide repository-side network service. This gives Subversion an advantage over CVS in interoperability, and allows certain features (such as authentication, wire compression) to be provided in a way that is already familiar to administrators
- Standalone server option (svnserve) - Subversion offers a standalone server option using a custom protocol, since not everyone wants to run an Apache HTTPD server. The standalone server can run as an inetd service or in daemon mode, and offers the same level of authentication and authorization functionality as the HTTPD-based server. The standalone server can also be tunnelled over ssh.
- Parseable output - All output of the Subversion command-line client is carefully designed to be both human readable and automatically parseable; scriptability is a high priority.
- Localized messages - Subversion uses gettext() to display translated error, informational, and help messages, based on current locale settings.
- Interactive conflict resolution - The Subversion command-line client (svn) offers various ways to resolve conflicting changes, include interactive resolution prompting. This mechanism is also made available via APIs, so that other clients (such as graphical clients) can offer interactive conflict resolution appropriate to their interfaces.
- Repository read-only mirroring - Subversion supplies a utility, svnsync for synchronizing (via either push or pull) a read-only slave repository with a master repository.
- Write-through proxy over WebDAV - Subversion 1.5 introduces a write-through proxy feature that allows slave repositories (see read-only mirroring) to handle all read operations themselves while passing write operations through to the master. This feature is only available with the Apache HTTPD (WebDAV) server option.
- Natively client/server, layered library design with clean APIs - Subversion is designed to be client/server from the beginning; thus avoiding some of the maintenance problems which have plagued CVS. The code is structured as a set of modules with well-defined interfaces, designed to be called by other applications.
- Binary files handled efficiently - Subversion is equally efficient on binary as on text files, because it uses a binary diffing algorithm to transmit and store successive revisions.
- Costs are proportional to change size, not data size - In general, the time required for a Subversion operation is proportional to the size of the changes resulting from that operation, not to the absolute size of the project in which the changes are taking place.
- Bindings to programming languages - The Subversion APIs come with bindings for many programming languages, such as Python, Perl, Java, and Ruby. (Subversion itself is written in C.)
- Changelists - Subversion 1.5 introduces changelists, which allows a user to put modified files into named groups on the client side, and then commit by specifying a particular group. For those who work on logically separate changesets simultaneously in the same directory tree, changelists can help keep things organized.
|Operating Systems||Windows, Linux, Mac|
Companies can't remove reviews or game the system. Here's why
Our web development team uses Apache Subversion as one of our version control systems. A version control system is a critical tool for software development because it provides a central repository for our shared code and also tracks how our code changes over time, allowing us to view a history of changes or revert back to a previous version if necessary.
- Retain a history of changes to a set of files
- Allow multiple people to collaborate on a set of files and merge changes together
- Apache Subversion works great when all users have access to the central Subversion server. This might mean users need to be on the same network.
- Apache Subversion isn't great for "offline" work as it requires access to the central Subversion server.
It's a relatively simple version control system so it works great for an individual or small team (less than 10 people). But if you have a medium to large team, especially one with members distributed over a large geographic area, or one where individuals need to be able to work "offline" without access to a central server, Apache Subversion will likely not be the best choice.
Also, if you're maintaining an open-source project where outside people will be interacting with your code repository, git is probably a better choice because it's becoming the de-facto standard these days and what most developers are familiar with.
Used mainly as a collective tool for version tracking to ensure revisions are tracked by the dev team, and all maintain branches of our team/project repositories. To commit the revisions once all devs have merged code from respective timelines.
- Easy install
- Integrates into agile project standards
- Revision regressions tracking in projects
- Requirements more straight forward (CVS editing options)
- Some packaged dependencies are unnecessary
- Potential for vendor packaged security issues
Can be [suited] for teams building solutions and manage code file versioning. Subversion for us simplifies the changes per file and code version before merging to branch for continuous integration and eventually deployment. With Apache Subversion in the process of our agile development, we can continue to automate deployment as much as possible with versioning.
We used Apache Subversion to manage and control source code for our development team. Subversion helps to track, version, and manage conflicts when a file is being worked on by different team members at the same time. It allows changes to happen in parallel, keeps track of exactly what, when, and who has made the change, and allows us to revert back if necessary.
- Track and control concurrent versions of the same files.
- Has good support from many different software, including visualization, DevOps toolchain.
- Well documented and understood by developers as it has been around for a long time.
- Does not support distributed environment unlike Git.
- Merging can be painful.
- Does not natively support advanced features such as pull requests.
We used to use Apache SVN for source code file versioning for all our software projects in the e-business department. Now we only use it for few projects that are not transitioned yet to Git. SVN, as most of the file versioning tools provide the following for us:
- Revision control.
- Interactive conflict resolution.
- Tracking commits.
- Collaborative commits (with the ability to lock files for disabling collaboration and avoid conflicts).
- Revision control done properly - you have end to end visibility of all changes in the project.
- Conflict resolution - visually highlighting the differences helps to track down the problem.
- Being open source and very popular.
- We are using SVN hosted in our network - it is very stable, we had almost zero downtime in 4 years.
- Rollbacks are made simple and easy to use.
- It is missing the pull request feature which Git has. You can still do it in SVN but more work is needed.
- It is centralized. Nowadays software developers and teams need more flexibility and will choose Git for that.
- Performance is not a strength of SVN pulls and commits.
- The disk space use by working copies is almost double due to the way SVN organizes its working files.
- Less support for .NET developers since it comes from the open source world.
- Code reviews could be made simpler to help the reviewer more.
Subversion solves our software versioning problem by providing tools for conflict resolution when doing collaborative work on the same files and projects. We use it with TortoiseSVN and it works great for some of our projects with smaller teams. However, we have a need to make code reviews more and it is a little more difficult to do that in SVN, compared to Bitbucket and Git.
Subversion is being used by our engineering team to manage the development code we write for the company.
- Can be used from many locations, like a cloud-based system but with more custom control--and its free!
- Multiple projects easily stored in a single repository, which aids in maintenance of common code, yet also easily allows for separate repositories where no sharing is desired.
- Very stable, with lots of additional tools to help maintain and examine repositories (e.g. websvn).
- Much easier to understand when coming from more traditional SCM systems like CVS and Perforce (as opposed to Git, which is a bit of a paradigm shift).
- Refactoring the layout of a respoitory--or a part of a repository--can be a bit painful, especially for users with workspaces associated with the affected part of the repository. Not sure what could be done to make that better, but it would be nice if something was possible.
- Folks coming from Git can have problems using Subversion. Again, not sure anything can (or should) be done to address that, but it is occasionally an issue.
Where multiple developers have well-defined areas of responsibility it works great! When many developers are all working in the same area of code, so changes overlap, then it is more of a challenge. But, like Git, it has pretty good merge tools to help resolve conflicts.
In my organization, Apache Subversion (SVN) is used as a versioning software for some specific types of objects. It is always and only used to allow the multiple processing of objects avoiding that a resource overwrites more recent changes and to keep track of the last changes made so as to go back to the previous modification and evaluate the differences.
- Software versioning
- Very stable product
- Easy to use
- The installation requires some initial configuration
- Improved interface
- Inconvenient update management
If you have multiple development environments and different resources involved; if you have more developers accessing the same files and the changes are continuous (for example if you are in a continuous delivery condition) it is certainly advisable to implement a versioning solution and SVN is a good product certainly.
We used Subversion to manage a ColdFusion based software development project for a US Federal government contract. We were largely isolated (both geographically and organizationally) from the rest of the company (it was their attempt to get into Federal contracting) and I'm not sure what was used in other parts. Our biggest reason for using it was to allow working on multiple releases in parallel. Before I helped set up Subversion properly, they were delivering old code with new releases, "clobbering", as they said, previously delivered code. By setting up proper branching, I fixed the problem, to the relief of both the company and the customer. I also integrated it with the Redmine issue tracking system, requiring developers to associate issues with their commits.
- Version control - it's what it's designed for.
- Modifiable - It only takes a little bit of knowledge of a scripting language (I used Windows BAT files calling Perl scripts) to extend capabilities, like the aforementioned integration with Redmine.
- Back end administration- It's a breeze. There's very little work involved in terms of administering it once you've got it installed on a server, and even setting that up isn't bad.
- Distributed development - I've never worked in an environment where distributed development (developers widely scattered geographically) was a factor, but that's why Git exists.
- Merging - Merging of code from one branch to another can be painful, especially if it's not done frequently. (On the other hand, doing merges is one of the reasons I get a nice salary, so I can't complain too much!)
I'd recommend Subversion for almost any software development effort. It is less appropriate for any project with widely geographically distributed developers. For VERY elaborate projects, a higher end commercial tool might be warranted.
I have used apache subversion for a course that I have taken and also for a company that I intern for. It is used for collaborating projects with team members. At the university level, apache subversion is a mandatory version control [solution] to be used in many courses and an option in many other courses in the fields related to computers. At an organizational level, at the company that I currently intern for, apache subversion is used by the whole software department over 3 different countries to collaborate over the huge project we are working on. Apache Subversion is a simple tool used to keep all the people working on a project on the same page by letting everybody work on the same project at the same time.
- Old is gold. Apache Subversion has existed before many other version control systems, including Git. It's old, stable, and easy to use with not many complications.
- Excellent versioning system. You can jump between any particular version of your project to any other version just by reverting or updating, you can also create patches of your own changes and then apply the patch on your own system on a different check out or on someone else's computer who has a checkout copy.
- You can search for any older commit by using words used in the comment log or by using an exact commit number or anything in between. You can also check the log of each and every individual file instead of the whole checkout.
- Tortoise SVN is a client for Apache Subversion. It has one of the best UIs I have ever seen for a version control system.
- Merge conflicts is one area where I think that Apace Subversion can improve a lot in. Where there is a single file being edited by two different people and the person who tries to update after someone before him commits with changes on the same file then Subversion tries to merge the changes and create an ideal file but fails miserably.
- Any file renames or deletion or additions have to be specifically made through Apache Subversion or has to be notified to Apache Subversion in a round about fashion or it will be disregarded while committing the changes. While this is reasonable, it is quite annoying until a user gets used to it.
- Faster on Linux and slower on Windows. Apache Subversion can be improved by increasing its checkout, update and commit speeds on Windows.
I would recommend using Apache subversion for any kind of project no matter the size or type of the project. It is very well suited in scenarios where the project is being worked upon by a team, especially a large team operating over various time zones. It provides a good means of collaboration among team members, allowing them to work peacefully and time effectively. I do not recommend using apache subversion for projects that are solely documentation based because it would be an overkill. Instead you could use Google Drive for such projects.
Subversion used to be our main version control software before we started using GitHub. But after introduction of Git, we stopped using subversion drastically . We only have a few old code projects which are still on subversion. We have decided to go ahead with Git for all new projects.
- User friendly and easy to learn and understand
- Free software
- Easy to keep track of code versions
- Not distributed like Git
- Git more user friendly and advanced. Git has lot more features .
If the code versioning is only needed between a few developers (with not much collaboration) and company cannot afford to buy GitHub License.
- The default conflict resolution option, to merge locally, has led to a much more efficient work environment when working with large teams on large codebases. The traditional single-person file locking can really get in the way of team work, as you have to wait for your team member to finish their changes before you can start working on the same file, even if they called in sick for work that day. While sometimes this requires manually figuring out what to do when two changes affect the same line of code, most of the time the changes are on the same lines of the file, and merging can happen transparently.
- I have enjoyed the branching process in subversion. Branches and tags are not strict features of the product, which allows for fudgibility, but when you use the recommended trunk/tags/branches folder layout, it behaves as if it was built it. Implemented simply as copy/branch and merge functions, I have found them to work just as well as a built it system would work, and it does a good job pointing out issues with a change's ancestry.
- Subversion also have a rich ecosystem of third-party tools and service providers. I personally have used TortoiseSVN for years, but there are several plugins that integrate directly into Visual Studio or Eclipse. Also, I have found hosting services like CVSDude (now called CloudForge) to be a big time-saver over hosting a repository on your own servers, while providing peace of mind that your code-base is in a different physical location, in case say, your server farm burned down. (I'd call that a serious edge condition, but my job involves edge conditions!)
- At times, locking problems can be difficult to solve. This normally happens you make a mistake, like attempting to update a folder that has running executables within it. Often times, you can just unlock a parent folder and you' are all set, but on more than one occasion I have had to recheckout a folder because I could not resolve the lock, even after rebooting.
- Looking up the history of a file can be very slow, taking several minutes, especially when looking at the history of an entire folder.
- Novice users of subversion often make the mistake of dragging folders in Windows that are managed by subversion. This does not cause the folder to move in the svn repository, which can lead to serious confusion why a user's folder structure does not seem the synchronize correctly with other users. To an advanced user, this can be a very useful feature, but absolutely hell for the novice.
- I have not found any third-party tools yet that let me visualize the commits for a codebase, particularly across branches. This may be partially because of the slow history I already pointed out, but I believe it's because I have not been willing to even look at the multi-thousand dollar code management solutions I have seen advertisements for in the past.
I would only consider not recommending Subversion if the development department adheres to what I call the "One Microsoft Way" (a play on words of Microsoft's address). Many IT departments prefer to go completely by the book on all procedures related to IT. While that is justifiable if you consider what to do if the entire programming department quit without notice, Subversion offers too many advantages to not consider seriously as a better replacement for Microsoft's standard source code repository solutions.