指间(蒋建华)--天行健,君子当自强不息

        专注于微软产品及.Net技术的blog
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

迁移VSS项目到TFS 2010

Posted on 2010-10-30 11:40  蒋建华  阅读(1357)  评论(0编辑  收藏  举报

   要想迁移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里包含三个文件夹和两个配置文件(datatempuserssrcsafe.iniuser.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 系统管理