要想迁移VSS里的项目到TFS或者迁移工作项到TFS数据的迁移过程都遵循三个步骤:准备迁移、准备迁移的数据、迁移数据。
要想迁移 VSS里的项目到 TFS或者迁移工作项到 TFS数据的迁移过程都遵循三个步骤:准备迁移、准备迁移的数据、迁移数据,如下图所示。
图 迁移到 TFS
1、迁移之前的准备工作
( 1)签入:确认所有代码被签入,最好代码能被编译通过。
( 2)锁定:防止迁移过程中有人签入或签出操作(避免造成代码管理混乱),迁移之前需要锁定 VSS,运行 VSS Admin,打开 Tools| lock SourceSafe database,在显示的对话框中选中“ Lock all users out of Visual SourceSafe”,如下图所示。
图 锁定所有 VSS用户
( 3)备份:迁移之前对 VSS进行备份操作,迁移过程中发生问题可以恢复到迁移之前的状态。 VSS6.0里包含三个文件夹和两个配置文件( data、 temp、 users、 srcsafe.ini、 user.txt),将里面所有文件直接复制到安装 TFS的服务器目录下,如下图所示。
图 VSS中的配置文件
2.迁移数据分析
( 1)创建分析文件:创建分析文件,主要分析一下 VSS配置库里面有没有问题,诸如数据有没有不一致的问题,需要创建两个 XML格式的分析文件,用以检查迁移设置。 XML文件( VSSAnalysisSettings.xml)内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<SourceControlConverter>
<ConverterSpecificSetting>
<Source name="VSS">
<VSSDatabase name="E:\VSS"></VSSDatabase>
<UserMap name="Usermap.xml"></UserMap>
</Source>
<ProjectMap>
<Project Source="$/C05.root/C05/C05"></Project>
</ProjectMap>
</ConverterSpecificSetting>
<Settings>
<Output file="Analysis.xml"></Output>
</Settings>
</SourceControlConverter>
主要节点说明如下:
VSSDatabase:需要转换的 VSS共享文件夹名称;
UserMap:需要转换的 VSS 用户;
ProjectMap:描述需要转换的项目;
Output:输出文件。
(2)运行分析
进入VS 2010命令提示环境下,运行VSS Converter analyze VSSAnalysisSettings.xml进行分析,分析前会提示要求输入VSS Administrator密码,默认情况下,VSS的管理员密码是空的,如下图所示。
图 VSS分析
注意:这里运行VSSConverter analyze时,VSSAnalysisSettings.xml文件可以和VSSConverter不在一个目录下,只需要配置xml文件的绝对路径就可以了,如VSSConverter analyze D:\01\VSSAnalysisSettings.xml ,表示 VSSAnalysisSettings.xml 是放在D盘01的文件夹下的。
分析完成后,生成结果文件Analysis.xml,当然也可以通过报表来浏览生成的结果文件。
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='_MigrationReport_Files\ReportOutput.xslt'?>
<Report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.1.0">
<Type>PreMigration</Type>
<Converter>VSSConverter</Converter>
<RunBy>WIN-L9H319R9GHI\Administrator</RunBy>
<SourceSystem>VSS</SourceSystem>
<TargetSystem>VersionControl</TargetSystem>
<Title>Analysis Report</Title>
<UserInput UsingUI="false">
<CommandLine>analyze D:\01\VSSAnalysisSettings.xml </CommandLine >
<Options>
<Option>Command - Analyze</Option>
<Option>Visual SourceSafe Database - E:\VSS\srcsafe.ini</Option>
<Option>Settings file - D:\01\VSSAnalysisSettings.xml</Option>
<Option>User map file - C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Usermap.xml</Option>
<Option>Report file - Analysis.xml</Option>
</Options>
</UserInput>
<Issues>
<Issue IssueID="SourceSafeQfeNotInstalledIssue" Type="Error">
<Message />
</Issue>
</Issues>
<Summary>
<TypeOfMigration>Full</TypeOfMigration>
<SourceActionStartTime />
<SourceActionEndTime />
<StartTime>2010/3/16 23:22:17</StartTime>
<EndTime>2010/3/16 23:22:18</EndTime>
<TotalTime>00:00:00</TotalTime>
<Status>Analysis completed</Status>
<SourceAndDestination>
<Repository Source="E:\VSS\srcsafe.ini" />
<MatchSummary />
<Projects>
<SourceControlConverterConverterSpecificSettingProject Source="$/C05.root/C05/C05" />
</Projects>
</SourceAndDestination>
</Summary>
<Statistics>
<HasCriticalError>false</HasCriticalError>
<NumberOfErrors>1</NumberOfErrors>
<NumberOfWarnings>0</NumberOfWarnings>
<NumberOfItems>0</NumberOfItems>
<StatisicsDetails>
<NumberOfCheckouts>0</NumberOfCheckouts>
<NumberOfActions>13</NumberOfActions>
<SizeOfRepository>0</SizeOfRepository>
</StatisicsDetails>
</Statistics>
<Output />
</Report>
3、实施迁移
分析成功后,需要具体实施迁移,实施迁移的步骤如下。
(1)建立TFS相应用户
在TFS中添加用户并赋权的情况,如下图所示。
图 在TFS中添加用户并赋权
(2)定制用户映射文件
描述VSS用户与TFS的映射关系,此次测试项目中用户对应TFS中的域用户账号如下。
其实这个Usermap.xml文件已经使用过了,细心的读者有没有发现?如果没有,可以去看看VSSAnalysisSettings.xml配置节里的配置。
(3)创建迁移文件
VSSDatabase节点的name指定VSS数据库来源。
UserMap节点的name指定VSS用户与TFS用户映射关系文件。
ProjectMap节点指定VSS项目目录与TFS目录对应关系,这里指定的是把VSS的全部子项目放在TFS中的MAP2_30227目录下。
TeamFoundationServer节点设置TFS服务器的配置,如服务器、端口等。
示例VSSConvertSettings.xml如下。
<?xml version="1.0" encoding="UTF-8"?>
<UserMappings>
<UserMap From="Admin" To="win-l9h319r9ghi\administrator"></UserMap>
<UserMap From="Administrator" To="win-l9h319r9ghi\administrator"></UserMap>
<UserMap From="Guest" To="win-l9h319r9ghi\Test1"></UserMap>
<UserMap From="Test" To="win-l9h319r9ghi\Test"></UserMap>
</UserMappings>
运行VSSConverter migrate VSSConvertSettings.xml(本例中以VSSConverter migrate D:\C05\VSSConvertSettings.xml来执行)就可以完成迁移了。
最后需要修改
C:\Windows\Microsoft.NET\ Framework\ v2.0.50727\CONFIG\machine.config中的connectionStrings
配置连接数据库名称。
注意:在迁移过程中用户权限需要重新设定( VSS 的用户和密码可以与 TFS 保持一致,前提条件下都是 domain user )。在执行迁移的过程中,您必须是 Team Foundation 上的 Team Foundation Administrators 组的成员才能完成此过程,而且还必须是 SQL Express 系统管理 员 。