Krepost User's Manual
Krepost is an application that allows migrating source-code repositories from Microsoft SourceSafe to Subversion repositories.
All files and history of each file are migrated to new repository.
More info can be found on the Product Page
- Krepost should be executed from a machine where Microsoft SourceSafe is installed. Works with both SourceSafe 6 or SourceSafe 2005, but latest Service Packs should be installed.
- Subversion repository should be version 1.5 or higher
- Should have username/password with permissions to commit files in Subversion
- Should have installed Microsoft .NET Framework 3.5
- For achieving better performance on large repositories, you should run Krepost on the same machine where SourceSafe repository is hosted (this avoids network bottlenecks)
- Subversion repository should be accessible by file-sharing1
(1) Even if Subversion repository is hosted at HTTP or SVN protocols, you still should use file-sharing protocol ↑
3. VSS Repository Preparation
- All examples from this document use C:\VSS as the Source Safe repository folder (source)
- Suggestion: Ask your users to check-in every file that is checked-out
- Suggestion: Make a back-up of your repository folder2, and run Krepost using this back-up copy.
- Suggestion: In case you are running using a live repository (non back-up), disable file-sharing so that no user will be able to use SourceSafe while migration is running
- Important: You should run SourceSafe ANALYZE.EXE utility, against your VSSCopy repository.
e.g.: C: \Program Files\Microsoft Visual SourceSafe\analyze.exe –f C:\VSS\data
Analyze executes 4 steps and may be a little slow depending on the size of your repository.
(2) No change is made to SourceSafe repository ever, so it’s safe to run directly against main VSS repository. However, a backup copy is strongly suggested. ↑
4. SVN Repository Preparation
Ensure that Subversion repository is hosted in the same machine as SourceSafe
- All examples from this document use C:\SVN as the Subversion repository folder (target)
- In case you don’t have a repository, you can create with: svnadmin create C:\SVN
- In case you already have a subversion repository in a different machine, you can just copy it3 into the machine where SourceSafe is hosted
(3) Subversion repository folder is the folder that contains subfolders “db”, “conf”, “locks”, etc. ↑
5. Temporary Folder
Create a temporary folder for the migration. You should have enough space to hold all tour VSS data.
If you use a RAM DRIVE you'll notice significant speed improve
All examples in this document use C:\TEMP as the Temporary Folder
Just run the installer (Krepost-2.3.2-Trial-Setup.exe).
If you don't want a regular installation, or don't have Administration privileges, just unzip Krepost-2.3.2-Trial.zip into any folder, extracting all contents (Krepost.exe and other necessary DLLs). E.g.: C:\Krepost
It's not necessary to have Administrator privileges for running Krepost, but you should have full read access to SourceSafe repository and full write access to Git repository
- Suggestion: Before running Krepost, it's strongly recommended to stop Windows Search Indexing service.
- Execute Krepost.exe (which should be available in Start Menu, under Krepost folder)
Step 1. Choose a Temporary Folder
Choose a Temporary Folder
All examples in this document use C:\TEMP as the Temporary Folder
Step 2. Choose a Source Safe Repository (source)
- Choose a Source Safe Repository, by locating your srcsafe.ini file.
- Input user name and password, or leave Admin user and click Clear Admin Password button, which will set empty password for Admin user
Step 3. Choose Folders to Export
- Choose which folders you want to Migrate
Step 4. Choose Export Options
- "Remove SCC" define whether Source-Control-Mapping files should be ignored (*.scc, *.vssscc, *.vspscc) and Source-Bindings should be removed from Microsoft Visual Studio.NET files (*.csproj, *.vbproj, *.sln)
- "Ignore Visual Studio.NET user-specific settings" define whether Microsoft Visual Studio.NET user-settings files should be ignored (*.suo, *.user)
- Migrate only revisions after DD/MM/YYYY: only revisions made after this date will be imported. Useful for importing repositories with large history
- Migrate only up to N latest revisions: if file has more than N revisions, only the N latest revisions will be imported. Useful for importing repositories with large history
- If binary file is larger than xxx kB, migrate only latest version: if a binary file surpasses size limit, only the latest version of this file will be imported. Useful for ignoring history of binary DLLs or EXEs
- If binary file is larger than xxx kB, dont migrate file at all: if a binary file surpasses size limit, it will not be imported at all. Useful for ignoring huge binary files which shouldn't be in Source Safe at first place.
Step 5. Exporting files from VSS
In this step, Krepost will read every file that should be imported, including its history.
Every file revision will be compressed into zip packages
Step 6. Exporting More VSS Folders
If desired, you can repeat Steps 2 to 5 as many times as you want.
This allow you to export a huge VSS repository in many parts, avoiding Ouf Of Memory problems.
Also it enables you to merge two different repositories, as in cases when one repository keeps old projects and the other current ones, or just when projects were split across multiple VSS repositories to workaround VSS size limits.
Step 7. Choose a Subversion Repository (target)
- Choose a Subversion Repository, by locating uuid file (which is usually inside db subdirectory)
- Input user name and password
Step 8. Choose a Target Folder for Import
If the target repository is empty, you will see only the root folder, as in the previous screenshot.
Step 9. Import
- Every zip package (created in steps 2 to 5) will be reindexed
- Duplicates are deleted (in case the same folder was extracted more than once in different exports)
- Individual file changes will be grouped into changesets, according to the time file changes happened (inside short time interval), and according to the author of each change. In the example below, all file-histories were grouped into only 937 changesets.
- Changesets will be commited to Subversion
Step 10. Final Step
After all changesets are commited to Subversion, no files are not deleted automatically. By opening Temporary folder, you'll be able to see
- Krepost*.log: log of every file which was imported or ignored
- *.zip: each package consists of many sourcesafe files and their respective histories.
- Changesets*.xml: each xml describes the contents of the given changesets which happened during a specific month (one xml for each month)
- SVNCHECKOUT\: this folder was used for importing files into new repository (Subversion)