Спонсор: Microsoft
Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 805 / 25 | Оценка: 4.43 / 3.71 | Длительность: 10:46:00
Дополнительный материал 4:

Практикум

Как перенести исходный код из Visual Source Safe в Team Foundation Server

Область применения

  • Microsoft® Visual Studio® 2005 Team Foundation Server (TFS) .
  • Microsoft Visual SourceSafe® (VSS) .

Описание

В этой статье подробно разбирается процесс переноса исходного кода из VSS в TFS с использованием VSS Converter. Конвертер позволяет переносить файлы, папки, историю версий, метки и пользовательскую информацию из базы данных VSS в базу данных системы управления исходным кодом TFS. Прежде чем выполнять перенос исходного кода, необходимо создать резервную копию и подготовить исходную базу данных VSS.

Содержание

  • Задачи.
  • Обзор.
  • Прежде всего.
  • Порядок операций.
  • Шаг 1 - создание резервной копии базы данных VSS.
  • Шаг 2 - анализ базы данных VSS с точки зрения целостности данных.
  • Шаг 3 - анализ проектов в VSS.
  • Шаг 4 - подготовка к переносу проектов.
  • Шаг 5 - перенос проектов.
  • Дополнительные рекомендации.
  • Дополнительные ресурсы.

Задачи

  • Научиться анализировать проекты VSS и выполнять подготовку к переносу.
  • Перенос проектов VSS в TFS.

Обзор

В Team Foundation Server включены инструменты, облегчающие перенос исходного кода из базы данных Visual Source Safe (VSS) в систему управления исходным кодом TFS. В частности, в TFS предлагается инструмент VSS Converter, позволяющий переносить файлы, папки, историю версий, метки и пользовательскую информацию. VSS Converte r используется в два этапа: сначала для выявления потенциальных проблем с его помощью выполняется анализ существующей базы данных VSS, а затем выполняется фактический перенос.

Следуя рекомендациям из этой статьи, вы успешно перенесете свой исходный код. Основные проблемы, которые могут при этом возникнуть, обусловлены некоторыми различиями процесса управления исходным кодом в TFS по сравнению с VSS. Например, в TFS не поддерживается совместное использование файлов. При переносе общий файл копируется в целевую папку в том состоянии, в котором он был на момент начала совместного использования. Ветвление в VSS осуществляется через совместное использование файлов, поэтому перенос ветвей также заключается в копировании файлов в целевую папку системы управления исходным кодом TFS. Поскольку TFS/ не поддерживает фиксацию версий, инструмент VSSConver-ter маркирует все файлы, версии которых ранее были фиксированы в базе данных VSS, меткой "PINNED", чтобы их можно было найти в системе управления исходным кодом TFS.

Прежде всего

Чтобы успешно выполнить все действия, описанные в этой статье, необходимо следующее:

  • Вы должны зарегистрироваться под учетной записью, входящей в группу Team Foundation Administrators.
  • На компьютере, где работает конвертер, должен быть установлен клиент VSS 2005. Если используется более ранняя версия VSS, работа конвертера завершается с выводом предупреждения. Также обязательно используйте команду Analyze клиента VSS 2005, поскольку она способна находить проблемы, которые предыдущими версиями не определялись. База данных VSS необязательно должна быть базой данных именно версии VSS 2005.
  • На компьютере, где выполняется конвертер, должен быть установлен и активирован Microsoft SQL Server™ 2005 Express Edition. Во время преобразования конвертер использует локальный экземпляр SQL Server как временную базу данных. SQL Server Express Edition устанавливается по умолчанию с Visual Studio 2005.
  • Используйте имя домена TFS и список имен пользователей TFS так, как они определены в Microsoft Active Directory®.
  • Заранее узнайте имя пользователя и пароль администратора VSS, а также имя пользователя и пароль администратора проекта TFS.

Порядок операций

  • Шаг 1 - создание резервной копии базы данных VSS.
  • Шаг 2 - анализ базы данных VSS с точки зрения целостности данных.
  • Шаг 3 - анализ проектов в VSS.
  • Шаг 4 - подготовка к переносу проектов.
  • Шаг 5 - перенос проектов.

Шаг 1 - создание резервной копии базы данных VSS

Прежде чем выполнять перенос, создайте резервную копию базы данных VSS, которую собираетесь переносить.

  1. Попросите всех пользователей возвратить редактируемые ими файлы и выйти из базы данных VSS. Попросите пользователей закрыть Visual Studio Integrated Development Environment (IDE) и VSS Explorer.

    Важно!Извлеченные для редактирования файлы не будут перенесены в TFS.

  2. Убедитесь, что никто не подключен к базе данных.
  3. Убедитесь, что для базы данных не запланированы никакие задачи анализа.
  4. Скопируйте следующие подпапки папки установки VSS в папку резервного копирования: \DATA \Temp \USERS
  5. Скопируйте в папку резервного копирования следующие файлы: User.txt Srcsafe.ini

По умолчанию эти файлы размещаются в папке \Program Files\Microsoft Visual Studio\VSS.

Шаг 2 - анализ базы данных VSS с точки зрения целостности данных

На данном этапе с помощью утилиты Visual SourceSafe Analyze выявляются и исправляются проблемы целостности в базе данных.

  1. Откройте окно командной строки и введите команду Analyze.exe, чтобы выявить повреждения или ошибки в базе данных: analyze "<sourcesafe data directory>" Для автоматического выполнения используйте параметр -I.
  2. Если у вас возникают проблемы с правами доступа, ошибки "unable to checkout files" (невозможно извлечь файлы), "losing checkout status" (потеря статуса "извлечен для редактирования") или любые другие ошибки со ссылками на файлы Status.dat или Rights.dat, выполните программу Ddconv.exe или Ddconvw.exe. Они обновляют формат базы данных VSS. По умолчанию эти программы установлены в подпапке \Admin.

Шаг 3 - анализ проектов в VSS

Теперь выберите проекты, которые будете переносить, и запустите инструмент командной строки TFS VSSConverter.exe, чтобы выявить в базе данных VSS потенциальные проблемы, способные вызвать трудности при миграции кода.

  1. Создайте XML -файл настроек, назвав его, например, ConversionSettings. xml:

    <?xml version="1.0" encoding="utf-8"?> 
     <SourceControlConverter> <ConverterSpecificSetting> 
     <Source name="VSS">
       <VSSDatabase name="c:\VSSDatabase"> </VSSDatabase> </Source>   
       <ProjectMap>
         <Project Source="$/MyFirstProject"></Project> 
       <Project Source="$/MySecondProject"></Project> 
      </ProjectMap> </ConverterSpecificSetting> 
    </SourceControlConverter>

    В этом примере MyFirstProject и MySecondProject - имена папок проектов в VSS, которые подлежат переносу. Чтобы перенести всю базу данных VSS, используйте <Project Source="$/"></Project> .

  2. Чтобы проанализировать проекты, запустите VSSConverter.exe с параметром Analyze: VSSConverter Analyze ConversionSettings.xml

    По запросу введите пароль администратора Visual SourceSafe.

  3. Конвертер создает файл VSSAnalysisReport.xml с результатами анализа. Изучите полученный отчет и выявите возможные ошибки преобразования.
  4. Сопоставьте пользователей VSS с пользователями TFS. Инструмент VSSConverter создает файл UserMap.xml, содержащий список всех пользователей VSS, которые хотя бы один раз обращались к базе данных VSS. Отредактируйте файл UserMap.xml, добавляя соответствующие имена пользователей TFS (учетные записи Windows). Имена пользователей должны быть заданы с включением домена (Домен\ИмяПользователя). Ниже показан пример файла Usermap.xml. В атрибуте From содержатся учетные записи пользователей VSS, а в атрибуте To указаны соответствующие им имена пользователей TFS.

    <?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"> <!--

    Этот файл автоматически создается VSS Converter. Он может использоваться для сопоставления пользователя VSS с пользователем Team Foundation. Например,

    <UserMap From="Jane" 
    To="MyDomain\Janep"></UserMap> 
    Это сопоставление приводит к тому, что все действия VSS-пользователя "Jane"
    при переносе будут отнесены к пользователю Team Foundation 
    "MyDomain\Janep". -->
     <UserMap From="ADMIN" To="Contoso\Administrator" /> 
      <UserMap From="Dave" To="Contoso\DaveM" /> 
       <UserMap From="Chris" To="Contoso\ChrisP" /> 
         <UserMap From="John" To="Contoso\JohnR" /> 
     </UserMappings>

Шаг 4 - подготовка к переносу проектов

На данном этапе с помощью инструмента VSSConverter.exe выполняется перенос проектов VSS.

  1. Измените файл ConversionSettings.xml, созданный на шаге 3, добавив в него новый элемент <Settings> с тегом <TeamFoundationServer> :

    <SourceControlConverter> 
     <ConverterSpecificSetting> …
       </ConverterSpecificSetting> 
        <Settings>
       <TeamFoundationServer name="YourTFSServerName"
         port="PortNumber" protocol="http"> 
       </TeamFoundationServer> 
     </Settings> … 
     </SourceControlConverter>

    Вставьте элемент <Settings> сразу после </ConverterSpecificSettings> , как дочерний элемент элемента <SourceControlConverter> .

  2. Измените файл ConversionSettings.xml, добавляя атрибуты Destination в элементы <Project> , как показано ниже. В качестве значений атрибутов Destination задавайте пути к папкам проекта TFS Team, куда вы хотите перенести файлы.

    <?xml version="1.0" encoding="utf-8"?> 
     <SourceControlConverter> <ConverterSpecificSetting> 
      <Source name="VSS">
       <VSSDatabase name="c:\VSSDatabase"> 
        </VSSDatabase> 
        </Source> 
        <ProjectMap>
       <Project Source="$/MyFirstProject"
         Destination="$/MyTeam_ProjectOne"> 
        </Project> 
       <Project Source="$/MySecondProject"
         Destination="$/MyTeam_ProjectTwo"> 
       </Project> </ProjectMap> 
      </ConverterSpecificSetting> 
      <Settings>
       <TeamFoundationServer name="YourTFSServerName"
          port="PortNumber" protocol="http"> 
      </TeamFoundationServer> </Settings> 
    </SourceControlConverter>

В разделе <ProjectMap> для каждой переносимой папки VSS вместо MyFirstProject укажите исходные папки VSS и вместо MyTeamProject-One - заданные папки системы управления исходным кодом TFS. Включите запись <Project> для всех проектов, которые хотите переносить.

Шаг 5 - перенос проектов

Скопируйте базу данных VSS в локальную папку (например, C:\VSSData-bases ) на компьютере, на котором хотите выполнить анализ и перенос. Базу данных VSS можно перенести и в совместно используемую папку на удаленном компьютере, но миграция в этом случае займет намного больше времени.

  1. В командном окне введите: VSSConverter Migrate Conversionsettings.xml
  2. Введите Y, чтобы подтвердить перенос. По запросу введите пароль пользователя с правами администратора Visual SourceSafe.

Дополнительные рекомендации

Если в VSS применялись совместное использование файлов, ветвление или фиксация версий файлов, необходимо учитывать следующие соображения:

  • Совместное использование Team Foundation Server не поддерживает совместного использования файлов. Перенос таких файлов осуществляется путем копирования версии файла на момент начала его совместного использования. Все последующие изменения, вносимые в совместно используемый файл, реплицируются как в общую, так и в исходную копию.
  • Ветвление Поскольку ветвление в VSS осуществляется посредством совместного использования файлов, перенос ветвей приводит к тому, что файлы копируются в заданную папку системы управления исходным кодом TFS. После ветвления изменения, вносимые в любую из ветвей, переносятся в соответствующую копию в системе управления исходным кодом TFS.
  • Фиксация версии Team Foundation Server не поддерживает фиксацию версий файлов. Чтобы найти в системе управления исходным кодом TFS элементы, версии которых ранее были фиксированы в базе данных VSS, инструмент VSSConverter маркирует такие файлы меткой "PINNED" . Для оптимизации производительности (это особенно важно для больших БД VSS ) выполняйте преобразования на сервере TFS.

Дополнительные ресурсы

Александр Будник
Александр Будник
Израиль, Иерусалим
Pavel Pelevin
Pavel Pelevin
Украина, Одесса