Thursday, February 3, 2011

Full Migration from VSS 2005 to TFS 2010 with History

I wanted to perform 'Full Migration' along with all code/label history to transfer from Visual Source Safe 2005 (or V8) to TFS 2010.

I figured out, VSSConvertor 2010 is more stable than previous versions. All issues reported in previous version are fixed in VSSConvertor10 with framework4.0. VSSConvertor10 does not support old tfs migrations (tfs2008 and tfs2005). We can use VS2010 commandline to use VSSConverter tool. 
Here are the steps:
1. Make sure TFS 2010 is installed on accessible location
2. Make sure, TFS explorer is available on VSS machine
3. VSS is version 2005 or V.8
4. You have Admin password of VSS Application
5. Make sure all files are checked-in by all developers
6. Create a copy of VSS database file (Must do for safety purpose in case things go wrong).
7. Install KB947647 to fix known issue during migration. http://code.msdn.microsoft.com/KB947647/Release/ProjectReleases.aspx?ReleaseId=1028
8. Create the Analysis settings files like analysissettings.xml in a location you want. I have this path on my machine E:\BashVSS2TFSMigration\analysissettings.xml

<?xml version="1.0" encoding="utf-8"?>
<SourceControlConverter>
<ConverterSpecificSetting>
<Source name="VSS">
<VSSDatabase name="E:\BashWorkspace\VSSRepository"></VSSDatabase>
<UserMap name="E:\BashVSS2TFSMigration\Usermap.xml"></UserMap>
<SQL Server="TEO-SRV-CCNET2K\SQLEXPRESS"></SQL>
</Source>
<ProjectMap>
<Project Source="$/PilotProject4Teo"></Project>
</ProjectMap>
</ConverterSpecificSetting>
<Settings>
<Output file="E:\BashVSS2TFSMigration\Analysis.xml"></Output>
</Settings>
</SourceControlConverter>
Here is xml description:

VSSDatabase = VSS Repository/databse file path
UserMap = User mapping frile name to be generated after analysis command.
SQL Server – instance name – can use SQL express for files < 4GB. Otherwise use Full SQL Server Instance where user should have access rights
Project = project name on vss to be ported
Output = analysis file to be generated after analysis command.
9. Analysis Command.

cmd> vssconverter analyze "E:\BashVSS2TFSMigration\analysissettings.xml"

10. Two files are generated with names Analysis.xml and Usermap.xml.
 11. I double clicked Analysis.xml and figure out that one Error Occured. Error was nothing but asking me to install a hot fix in VSS 'KB950185' from path: 
 12. Installed hotfix: KB950185
http://code.msdn.microsoft.com/KB950185/Release/ProjectReleases.aspx?ReleaseId=1123
 13. Again run the analysis command, this time things went correct. Here is analysis report with 0 Error and 1 Warning.
14. I edited Usermap.xml to assign destination users (which are Active Directory Users offcourse mapped to VSS users). History will be transferred to mapped users in tfs.

15. I edited Usermap.xml to assign destination users (which are Active Directory Users offcourse mapped to VSS users). History will be transferred to mapped users in TFS 2010.
<?xml version="1.0" encoding="utf-8"?>
<UserMappings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!--
This file is automatically created by VSS Converter. You can optionally use the file to map
a VSS user to a Team Foundation user. For example, <UserMap From="Jane" To="MyDomain\Janep"></UserMap>
This mapping causes all actions logged by VSS user “Jane” to be changed to Team
Foundation user “ MyDomain\Janep ” during migration.
-->
  <UserMap From="basharat.hussain" To="[MyDomain]\basharat.hussain" />
  <UserMap From="Cruisecontrol" To="[MyDomain]\shahid.iqbal" />
  <UserMap From="ADMIN" To="[MyDomain]\tfssetup001" />
</UserMappings>

At least users should have readonly rights on TFS team project.
16. Created a Team Project in TFS with name ‘GD Project’ and provided full rights to domain user ‘basharat.hussain’ and Shahid.Iqbal readonly rights.
17. Created a MigrattionSettings.XML file by copying from AnalysisSettings.XML.

<?xml version="1.0" encoding="utf-8"?>
<SourceControlConverter>
<ConverterSpecificSetting>
<Source name="VSS">
<VSSDatabase name="E:\BashWorkspace\VSSRepository"></VSSDatabase>
<UserMap name="E:\BashVSS2TFSMigration\Usermap.xml"></UserMap>
</Source>
<ProjectMap>
<Project Source="$/PilotProject4Teo" Destination="$/GD Project/PilotProject4Teo"/>
</ProjectMap>
</ConverterSpecificSetting>
<Settings>
<TeamFoundationServer name="192.168.3.249" port="8080" protocol="http"
collection="tfs/DefaultCollection"></TeamFoundationServer>
<Output file="E:\BashVSS2TFSMigration\Migration.xml"></Output>
</Settings>
</SourceControlConverter>
Here is xml description:
Project Source = Project path in VSS
Project Destination = Propased Project path under ‘GD Project’ team project
TeamFoundationServer = TFS2010 DNS or IP address, with port
Collection – Project collection Name, I accessed following url and I can see collection name in web page ‘http://192.168.3.249:8080/tfs/web’
Output = migration file to be generated after analysis command.
18. Migrate Command:
cmd> vssconverter migrate "E:\BashVSS2TFSMigration\MigrationSettings.xml"
19. Inspect TFS 2010 and you can see migrated projects with history
20. Done 

No comments:

Post a Comment