Поделиться через


Знакомство с системой управления версиями

Обновлен: Ноябрь 2007

Система Visual Studio поддерживает систему управления версиями, используя уровень протокола Visual Studio Integration Protocol (VSIP) на своем интегрированном уровне разработки (Integrated Development Environment, IDE). Протокол VSIP может поддерживать множество пакетов систем управления версиями, которые обычно реализуются как подключаемые модули, написанные для соответствующих протоколов. Примером подключаемого модуля системы управления версиями является подключаемый модуль SourceSafe LAN, поддерживаемый системой Visual SourceSafe. Подробные сведения об этом подключаемом модуле см. в справке системы Visual SourceSafe.

ms171339.alert_note(ru-ru,VS.90).gifПримечание.

Система Visual Studio ссылается на пакеты систем управления версиями как на подключаемые модули, хотя они могут быть реализованы в виде других типов программных модулей.

Система управления версиями Visual Studio является только средой для подключаемых модулей систем управления версиями сторонних поставщиков. Поэтому, ее функциональные возможности активируются только посредством установки подключаемого модуля. Чтобы использовать подключаемый модуль системы управления версиями стороннего производителя обычно необходимо установить приложение стороннего производителя и/или подключаемые модули системы управления версиями на клиентском и серверном компьютерах веб-узла. После завершения их установки в соответствии с инструкциями стороннего поставщика функциональность этих модулей будет доступна посредством системы Visual Studio. Доступные операции различаются в зависимости от подключаемого модуля системы управления версиями. Для получения подробных сведений о работе конкретного пакета следует ознакомиться с документацией стороннего поставщика.

Подробные сведения о разработке системы управления версиями в Visual Studio см. в разделе "Обзор (система управления версиями)" в справке Visual Studio. В этом разделе справки приводятся также все сведения, которые требуются для разработки совместимого с системой Visual Studio пакета системы управления версиями стороннего производителя.

Основы поддержки системы управления версиями в Visual Studio

Основная поддержка системы управления версиями в Visual Studio включает установку параметров подключаемого модуля системы управления версиями и параметров среды, переключение подключаемых модулей, доступ к базе данных, а также управление версиями и работу с проектами, решениями и файлами Visual Studio и соответствующими метаданными. Система управления версиями в Visual Studio также поддерживает протоколы для управления доступом к базе данных, например, рабочую процедуру "блокирование-изменение-разблокирование" (Lock-Modify-Unlock), при которой пользователь, желающий изменить файл, должен извлечь его в монопольном режиме.

Важно учитывать, что необходимо использовать механизмы системы управления версиями в Visual Studio, чтобы взаимодействовать с подключаемым модулем системы управления версиями. Не используйте другие клиентские приложения сторонних производителей, поставляющих подключаемые модули, такие, например, как проводник Visual SourceSafe. Правильное использование механизмов системы управления версиями в Visual Studio гарантирует добавление в систему управления версиями только надлежащих файлов, а также выполнение обновления файлов проектов и решений Visual Studio с учетом конкретных особенностей подключаемого модуля.

Конфигурация и переключение подключаемых модулей системы управления версиями

Система управления версиями Visual Studio поддерживает конфигурацию и коммутацию подключаемых модулей посредством элемента Система управления версиями в диалоговом окне Параметры. Этот элемент доступен путем выбора команды Параметры в меню Сервис системы Visual Studio. Диалоговое окно Параметры будет использоваться для выбора подключаемого модуля, который требуется применить для системы управления версиями, а также для настройки параметров среды для этого подключаемого модуля.

Перед тем, как пользователь и его команда смогут воспользоваться преимуществами функций системы управления версиями в IDE системы Visual Studio, необходимо выполнить следующее:

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

  • Если требуемый подключаемый модуль системы управления версиями не установлен на компьютере, установите продукт стороннего производителя, который поддерживает подключаемый модуль и перезапустите Visual Studio, чтобы зарегистрировать его.

  • Создать базу данных системы управления версиями в соответствии с функциональными возможностями конкретного подключаемого модуля.

  • Отправить ссылку на расположение базы данных всем членам команды.

Доступ к базе данных

Основные команды доступа к базе данных, например, Извлечь и Добавить в систему управления версиями, доступны в меню "Файл" системы Visual Studio. Однако эти команды активируются только после выбора необходимого пользователю подключаемого модуля системы управления версиями. Когда используется одна из основных команд доступа к базе данных, выбранный подключаемый модуль активирует соответствующие функциональные возможности и/или среду стороннего производителя для выполнения данной операции.

Некоторые операции доступа активны только при использовании выбранного подключаемого модуля, тогда как другие операции доступны только тогда, когда также выбран проект, решение или файл Visual Studio в обозревателе решений системы Visual Studio. Например, когда выбран подключаемый модуль, можно использовать команду Добавить в систему управления версиями. Однако чтобы использовать команду Вернуть необходимо иметь элемент, выбранный в обозревателе решений.

Обработка файла системой управления версиями

В систему управления версиями Visual Studio можно добавить следующие файлы:

  • Файлы решений (*.sln).

  • Файлы проекта, например, файлы *.csproj и *.vbproj.

  • Файлы конфигурации приложений на базе XML, используемые для управления поведением проекта Visual Studio во время выполнения.

К файлам, которые нельзя добавить в систему управления версиями, относятся следующие:

  • Файлы пользовательских параметров решения (*.suo).

  • Файлы пользовательских параметров проекта, например, файлы *.csproj.user и *.vbproj.user.

  • Информационные веб-файлы, например, *.csproj.webinfo и *.vbproj.webinfo, которые управляют расположением виртуального корневого каталога веб-проекта.

  • Выходные файлы проекта, например, файлы *.dll и *.exe.

Распространение изменений пространства имен

Система управления версиями Visual Studio поддерживает распространение изменений пространства имен в подключаемых модулях системы управления версиями. Распространение изменений применяется для операций удаления, переименования и перемещения. Если запрашивается операция, для которой разрешается распространение изменения, подключаемый модуль системы управления версиями изменяет рабочую копию элемента с управлением версиями, основную копию в базе данных и копии всех других пользователей, когда производится возврат элемента и другие пользователи извлекают его.

Как система управления версиями производит обработку решений и проектов

Когда решение или проект добавляется в систему управления версиями, подключаемый модуль системы управления версиями должен сначала идентифицировать единый корневой каталог для добавляемого элемента. Этот корневой каталог определяет путь к родительскому каталогу для всех рабочих папок и файлов, составляющих решение или проект.

Единый корневой каталог часто соответствует физическому пути к диску. Однако если решение содержит файлы или проекты, размещающиеся на нескольких дисках, отсутствует физическая папка, на которую может быть отображен единый корневой каталог. Решение может перекрывать диски, но это невозможно для единого корневого каталога системы управления версиями. Для разрешения этой ситуации система управления версиями Visual Studio поддерживает понятие супер-единого корня. Этот тип корня является виртуальным контейнером, в рамках которого размещаются все проекты и файлы в решении с управлением версиями.

Когда производится добавление решения с помощью подключаемого модуля системы управления версиями с расширенными возможностями, подключаемый модуль создает в базе данных пустую корневую папку решения. Эта папка будет содержать все элементы в решении с управлением версиями. По умолчанию это папка <имя_решения>.root.

ms171339.alert_note(ru-ru,VS.90).gifПримечание.

   Когда в систему управления версиями добавляется единичный проект, папка .root не создается.

Использование корня решения обеспечивает следующие преимущества:

  • Уменьшение числа запросов пользователя. Корень решения минимизирует для решения возможное число привязок системы управления версиями и, таким образом, сводит к минимуму число запросов пользователю, когда производится добавление решения в систему управления версиями и выполняются другие задачи.

  • Инкапсуляция проекта. Корень решения гарантирует, что все проекты в решении могут легко идентифицироваться в качестве соответствующих друг другу, даже в том случае, когда один или несколько проектов размещаются в различных разделах или компьютерах.

Возможно отключение создания папки <имя_решения>.root, но это не рекомендуется делать. Дополнительные сведения см. в разделе Практическое руководство. Отмена создания папки <имя_решения>.root.

Решения в Visual Studio являются или решениями с правильным форматом, или решениями, в которых отсутствует такой формат. Решение с правильным форматом — это решение, иерархическая структура которого на диске соответствует его структуре в обозревателе решений. Все проекты решения с правильным форматом хранятся во вложенных папках папки решения на диске. Если в систему управления версиями добавляется решение с правильным форматом, подключаемый модуль системы управления версиями создает ниже папку *.root, чтобы хранить для решения основные копии файла решения (*.sln) и файлов пользовательских параметров решения (*.suo). И наконец, подключаемый модуль системы управления версиями создает папку ниже папки .sln для каждого дополнительного проекта в базе данных системы управления версиями.

Если решение не имеет правильного формата, подключаемый модуль системы управления версиями создает папку для решения и его начального проекта. Затем в папке решения создаются параллельно папки для каждого из дополнительных проектов.

Представления решения или проекта

Система Visual Studio обеспечивает три отличающихся представления для решения или проекта с управлением версиями: конструирование, система управления версиями и физическое представление. Многие из задач системы управления версиями выполняются проще, когда имеется однозначное соответствие между отдельными элементами этих представлений. Однако если производится создание решений и проектов и их добавление в систему управления версиями с помощью параметров по умолчанию системы Visual Studio, эти решения и проекты не будут обязательно организованы на диске таким же образом, как в обозревателе решений и в базе данных.

Представление конструирования для решения или проекта, которое представлено в обозревателе решений, является логическим изображением содержимого решения или проекта. Представление конструирования является обычно упорядоченным и логичным. Ненужные файлы скрыты, а файлы из многих различных физических расположений объединяются в одном контейнере проекта.

Представление системы управления версиями для решения или проекта, которое отображается в автономном приложении, таком как проводник Visual SourceSafe Explorer, также является логическим представлением решения или проекта. Однако представление системы управления версиями не является обязательным для отражения логического представления.

Физическое представление решения или проекта, которое отображается в проводнике Windows, едва ли отражает иерархическую структуру логического представления или представления системы управления версиями.

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

  • Создавайте пустые решения, а затем добавляйте в них проекты. Это помогает поддерживать в памяти логические связи типа "родитель-потомок" между решением и его проектами. Когда впоследствии решение добавляется в систему управления версиями, как представление системы управления версиями, так и представление проектирования, будут отражать иерархию решения на диске.

  • Присвойте каждому решению уникальное и описательное имя, отличное от имени каждого из содержащихся в нем проектов.

  • Избегайте добавления ссылочных файлов в решение или проект с управлением версиями.

  • Если это возможно, сохраните все файлы в решении или проекте на одном диске.

Подключения и привязки системы управления версиями

Система Visual Studio определяет подключение как наличие реальной связи по данным между Visual Studio и сервером базы данных. Когда решение или проект добавляется в систему управления версиями, подключаемый модуль системы управления версиями копирует элементы и все их содержимое с диска в базу данных. Для каждой папки, содержащей файл решения или проекта, создается одна папка системы управления версиями. После добавления элемента подключаемый модуль системы управления версиями связывает локальную рабочую копию решения или проекта с ее версией в базе данных..

Каждое решение с управлением версиями имеет, по крайней мере, одну привязку системы управления версиями. Однако элемент может иметь несколько привязок и требовать наличия нескольких подключений к базе данных. Количество привязок и подключений зависит того, как первоначально создается решение, и, сохраняются ли все его проекты и файлы в одном и том же разделе.

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

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

Если решение с управлением версиями не имеет правильного формата, можно представить его себе как дом, в котором каждая комната непосредственно подключена к Интернету. Расходы на Интернет существенно выше, чем в доме с одним подключением, расходы по текущему обслуживанию больше, а также более сложным и трудоемким является переключение между различными поставщиками услуг Интернета.

В идеальном случае решение и его проекты совместно используют одну привязку к системе управления версиями. Решения с одной привязкой являются более управляемыми, чем решения с несколькими привязками. Проще выполняются следующие действия:

  • Отключение от системы управления версиями, чтобы работать в автономном режиме.

  • Подключение к базе данных после повторного подключения к сети.

  • Выполнение ветвления за один шаг.

Можно создать решение с несколькими проектами с использованием одной привязки путем создания пустого решения перед добавлением его проектов. Кроме того, это можно сделать, выбрав параметр Создать каталог для решения в диалоговом окне Создать проект, когда создается пара "решение-проект".

Если за один шаг создается пара "решение-проект" и не выбран параметр Создать каталог для решения в диалоговом окне Создать проект (отключен по умолчанию), будет создана вторая привязка при добавлении в решение второго проекта. Одна привязка создается для начального проекта и решения. Дополнительные привязки создаются для каждого добавочного проекта.

Терминология системы управления версиями

В документации Visual Studio используется ряд терминов для описания функций и понятий системы управления версиями. В следующей таблице представлены некоторые общие термины.

  • Основная версия
    Серверная версия файла, из которой извлекается локальная версия.

  • Привязка
    Информация, которая сопоставляет рабочую папку решения или проекта на диске с соответствующей папкой в базе данных.

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

  • Конфликт
    Наличие двух или нескольких отличающихся изменений на одной и той же строке кода, когда два или более разработчиков извлекли и изменили один и тот же файл.

  • Подключение
    Активная линия передачи данных между системой управления версиями (например, Visual Studio) и сервером базы данных системы управления версиями.

  • База данных
    Расположение, где размещаются основные копии, журнал, структуры проектов и пользовательская информация. Проект всегда содержится в одной базе данных. Несколько проектов могут сохраняться в одной базе данных и может использоваться несколько баз данных. Другими терминами, которые обычно используются для базы данных, являются репозиторий и хранилище.

  • Журнал
    Используется для записи изменений в файле сразу же после его добавления в систему управления версиями. С помощью управления версиями можно вернуться в любую точку в журнале файла и восстановить его в том виде, в котором он был в этой точке.

  • Метка
    Имя, определенное пользователем, которое присоединено к конкретной версии элемента с управлением версиями.

  • Локальная копия
    Файл в рабочей папке пользователя, в котором сохраняются изменения, до тех пор пока не производится возврат. Локальная копия иногда определяется как рабочая копия.

  • Главная копия
    Чаще всего это возвращенная версия файла с контролем версий, в противоположность к локальной копии файла в рабочей папке пользователя. Другими терминами для главной копии являются серверная версия и версия базы данных.

  • Слияние
    Процесс объединения в новой версии файла различий в двух или более измененных версиях файла. Слияние может применяться к различным версиям одного и того же файла или к изменениям, сделанным в том же самом файле.

  • Общий файл
    Файл, имеющий версии, которые находятся в нескольких расположениях системы управления версиями. Другими терминами для общего файла являются копия и ярлык.

  • Корень решения
    Пустая папка в базе данных, которая содержит все элементы решения с управлением версиями. По умолчанию это папка <имя_решения>.root.

  • Супер-унифицированный корень
    Виртуальный контейнер, в котором размещаются все проекты и файлы в решении с управлением версиями. Например, [SUR]:\ — это супер-унифицированный корень решения с управлением версиями, который содержит проекты, расположенные в [SUR]:\C:\Solution\ProjOne и [SUR]:\D:\ProjTwo.

  • Унифицированный корень
    Путь к родительскому каталогу для всех рабочих папок и файлов в решении или проекте с управлением версиями. Например, C:\Solution — это унифицированный корень решения с управлением версиями, который содержит файлы, размещенные в C:\Solution, C:\Solution\ProjOne и C:\Solution\ProjTwo.

  • Рабочая папка
    Расположение, где сохраняются локальные копии элементов с управлением версиями (обычно на компьютере пользователя). Другим термином для рабочей папки является рабочая область.

См. также

Задачи

Практическое руководство. Отмена создания папки <имя_решения>.root

Ссылки

Диалоговое окно "Создать проект"