What is vss2svn?

This is an old answer from the old project page with some editorial changes:

vss2svn is a Perl script to migrate revision history from a Microsoft Visual SourceSafe (VSS) database to the Subversion version control system. It will migrate all as much history as possible with the command-line client including revision history, including comments, author names, and optionally revision dates (migrating dates uses a not-officially-supported feature of Subversion and can only be done if you are migrating to a brand-new Subversion repository).

What does vss2svn do?

Versions prior to 0.10 simply got the history that the command line client said was available for a particular VSS project. Unfortunately, that picture of the world left out files that used to be in a project, but are currently not in the project.

Version 0.10 reads the VSS database directly and is able to retrieve more history than the command line (or VSS API) is able to provide.

What version should I be using?

It depends on what your requirements are. If you can wait for 0.10, you should do so. If you want an easy, quick import you should use 0.3.3, especially the executable, which does not require ActiveState Perl to be installed. The execIf you want a more complete import with more fixed bugs, you should be using the legacy version from the trunk of the source code. This requires that you install Perl, the command-line client and Perl bindings.

I found a bug; should I submit a patch?

If you found a bug in the latest trunk (in the "script" folder), please discuss it on the mailing list. We are happy to accept fixes from contributors, but in order to keep the noise level of the issue tracker to a minimum, only full committers may create or modify tickets.

Where can I get vss2svn?

Current files are available at tigris.org.

Of course the repository is also available.

Where can I learn more?

You can subscribe to the users list at http://lists.pumacode.org/mailman/listinfo/vss2svn-users-lists.pumacode.org. You can also find more through the gmane.org mailing list archive archive.

Why was vss2svn created?

For those who wished to escape from VSS to Subversion. There's a few reasons why people would want to do so:

VSS is notorious for data loss/corruption and other strange behavior.
VSS is supported only on Windows. Subversion is supported on many platforms, including Windows.
VSS is notoriously slow when accesing the database over a network connection. Subversion was designed to be very flexible with regards to how the repository is accessed, especially over the network.
open source
VSS is not open source, unlike Subversion.
binary files
Subversion is designed to handle binary files.

Can vss2svn convert only specific projects?

No this is currently not supported. But there are workarounds for this:

  1. Make a copy of your VSS database and destroy all other projects from this copy. Make sure, that you destroy the projects in your local copy and not in the original database.
  2. use svndumpfilter while loading the converted archive to filter specific projects

Can vss2svn convert only a specific time or revision range?

No, but you can use the svndumpfilter while loading the archive.

I am using an encoding other than Windows-1252 and my filenames or commit logs are now garbled. How do I fix this?

Please see VssEncodingIssues for more information.

How do I setup an automated conversion path

Please see AutomatedWorkflow for more information.

PumaCode.org recommends CVSDude for fast, professional Subversion and Trac hosting:


These ads are automatically generated by Google. Revenue from these ads helps to pay for hosting this site; however, these ads do not constitute an endorsement by PumaCode.org.