Одним из основных преимуществ виртуальной среды является простота создания и редактирования файлов. Эта возможность означает, что вы можете быстро фиксировать, изучать и развивать идеи, но это также означает, что может быть сложно отследить изменения, совершенные над вашими ценными файлами, такими как исходный код или проекты электроники.
Необходимость в отслеживании изменений файлов в сочетании с необходимостью в комплексном решении для управления исходными данными, зафиксированными в электронном виде, привело к развитию систем контроля версий (Version Control Systems, VCS). Системы контроля версий являются программными средствами, которые могут не только сопровождать историю различных версий файла, но и также поддерживают открытие любой версии этого файла, а также сравнение любых двух версий файла. Система VCS, как правило, интегрируются с локальной операционной системой (ОС), что предоставляет доступ к дополнительным функциям и операциям над папками и файлами.
Системы контроля версий могут работать совершенно независимо от среды, используемой для создания и изменения файла. Как правило, они предоставляют интерфейс, который позволяет добавлять (Add) файлы в центральную область хранения, которая называется репозиторием, извлекать (Checkout) копию файла из репозитория в рабочую папку, затем фиксировать (Commit) изменения в репозиторий, вместе с пояснениями по изменениям, и многое другое.
Эти возможности предоставляются расширениями оболочки Windows, такими как клиент Tortoise, а также они включены в сам Altium NEXUS. Операции VCS могут быть выполнены из среды Altium NEXUS, без необходимости в доступе к файловой системе ОС.
Как правило, система контроля версий также обрабатывает ситуации, когда файл был извлечен и изменен множеством людей, которые затем могут вернуть свои изменения, накладывая их друг на друга, что потенциально может привести к потере работы проектировщиков в самой новой ревизии. Для работы с подобными ситуациями необходимы средства сравнения версий файла для поиска различий, а также интерактивное средство для объединения различий в одну версию файла, такое как возможность совместной работы над платой, доступная в Altium NEXUS.
Полезно понимать терминологию, используемую в системах контроля версий. Хотя доступно множество таких систем, они, как правило, используют схожие термины для описания своих функциональных возможностей.
Основы контроля версий
Основным подходом к работе с системой контроля версий (Version Control System, VCS) является доступ к копии проектных файлов, с которыми вы хотите работать, из репозитория, редактирование этих файлов в Altium NEXUS и их последующая фиксация в репозитории. Взаимодействие с репозиторием осуществляется через интерфейс системы контроля версий, который в Altium NEXUS встроен в панель Storage Manager и в панель Projects.
Ключевым аспектом работы системы контроля версий является то, что она отслеживает состояние файлов, к которым осуществлен доступ из репозитория, через рабочую папку, и, соответственно, отслеживает, над какой ревизией осуществляется работа и осуществляется ли над ней работа. Хотя результат работы один и тот же, работа с репозиторием и рабочими файлами отличается для различных систем контроля версий – для Altium NEXUS это может быть Subversion (SVN) или Git.
Система контроля версий Subversion
На изображении ниже показана концепция репозитория Subversion, который хранит последовательность ревизий проектных файлов (до ревизии 5), где самая новая ревизия извлечена (File » Check Out) в рабочую папку. При открытии файлов из рабочей папки в среде Altium NEXUS, система распознает, что они находятся под управлением контроля версий SVN, с отображением текущего статуса контроля версий в панели Storage Manager и в панели Projects.
Система контроля версий Git
На изображении ниже показана концепция удаленного репозитория Git, который хранит последовательность ревизий проектных файлов (до ревизии 5), где его содержимое было скопировано в локальный рабочий репозиторий Git, что, как правило, осуществляется клонированием удаленного репозитория или получением данных в рабочий репозиторий. При открытии файлов из рабочего репозитория в среде Altium NEXUS, система распознает, что они находятся под управлением контроля версий Git, с отображением текущего статуса контроля версий в панели Storage Manager и в панели Projects.
► Для получения более подробной информации перейдите в разделы Добавление в контроль версий Git и Клонирование репозитория Git.
В обеих системах VCS, показанных выше, ссылка между исходным репозиторием и рабочим расположением указывается в базе данных системы VCS рабочего расположения (в системной подпапке .svn
или .git
).
► Для получения более подробной информации по работе с системами контроля версий SVN и Git в Altium NEXUS перейдите на страницу Использования контроля версий.
Когда рабочие файлы VCS открыты в Altium NEXUS, контекстное меню панели Storage Manager (и панели Projects) позволяет выполнять стандартные операции VCS, такие как фиксация измененного файла в центральном репозитории (SVN) или рабочем репозитории (Git).
Команда Commit регистрирует измененный файл в репозитории, увеличивает номер ревизии (которая хранится внутри VCS), регистрирует сообщение, которое вы можете ввести для описания изменения файла, и, в случае Subversion, сохраняет копию файла в центральном репозитории. Для Git, измененный файл может быть в любое время скопирован из рабочего репозитория в удаленный репозиторий с помощью команды Push.
Доступ к интерфейсу контроля версий Altium NEXUS осуществляется непосредственно из панели Projects или из панели Storage Manager, где доступно больше опций.
Функциональные возможности управления версиями SVN и Git доступны в Altium NEXUS благодаря соответствующим
дополнительным программным модулям:
VCS Provider - SVN и
VCS Provider - Git. Они устанавливаются по умолчанию, и доступ к ним можно осуществить с помощью страницы
Extension & Updates системы.
Доступ множества пользователей
В большинстве ситуаций, инфраструктура контроля версий предприятия основана на центральных серверных репозиториях SVN или Git, обслуживаемых в локальной сети с помощью одного из доступных протоколов: svn
, svn+ssh
, https
и т.д. Это обеспечивает всех пользователей сети доступом, на основе серверных разрешений, и средством для совместной разработки проекта из единого управляемого ресурса.
В свою очередь, возможность множественного доступа позволяет отдельным участникам продолжать работать над проектом независимо друг от друга, без необходимости ожидания возврата файла перед тем, как можно будет работать над ним. Централизованная система контроля версий Git развивает это преимущество на шаг дальше, позволяя фиксировать файлы в локальном рабочем репозитории, затем в любой момент позже передать (Push) эти зафиксированные изменения в центральный репозиторий Git – таким образом, сетевое соединение до этого момента не требуется.
Тем не менее, система VCS для совместной работы требует средств и методов для разрешения неизбежных ситуаций, когда два пользователя изменили один и тот же файл. Когда эти возможности доступны, существует основа для настоящей совместной работы множества пользователей и связанных с ней преимуществ.
Для работы с подобными ситуациями, Altium NEXUS включает в себя возможности сравнения схем и плат, доступные через панели Storage Manager и Collaborate, Compare and Merge. Altium NEXUS предлагает полноценные функциональные возможности совместного проектирования плат, которые позволяют просматривать и разрешать различия файлов в редакторе и, в конечном счете, создавать новую основную ревизию в VCS. Расширенная функциональность совместной работы над платой также позволяет динамически проводить совместную работу множества пользователей, с возможностью определять и назначать области проекта в качестве рабочих регионов пользователя.
► Для получения руководства по использованию контроля версий для проекта в Altium NEXUS перейдите на страницу Использование контроля версий.
Репозитории VCS
Перед использованием контроля версий, проектные файлы должны быть распознаны системой VCS и Altium NEXUS, как находящиеся под контролем версий. Этот процесс может отличаться для различных методов и приложений VCS, но, по сути, он включает в себя создание и/или подключение к проектному репозиторию и добавление проектных файлов в этот репозиторий.
Проектные репозитории основаны на структуре базы данных, и внутри себя они хранят информацию в иерархии файлов и директорий, которая называется деревом файлов. Подключаемым репозиторием может быть центральный репозиторий SVN, рабочий репозиторий Git (который связан с удаленным репозиторием) или тем репозиторием, который вы создали в доступном расположении, например на локальном компьютере или в общем сетевом расположении.
В зависимости от типа репозитория, он будет доступен с помощью различных протоколов, которые включают в себя:
- Простой файловый доступ, который обычно используется для локальных или сетевых репозиториев.
- Протокол
svn
для серверного репозитория, использующий плоский текст или TCP/IP или его безопасный эквивалент svn+ssh
.
- Метод
http
для серверного репозитория, как правило использующий WebDAV через http или его безопасный эквивалент https
.
Подключение к репозиториям Subversion (SVN) и, при необходимости, их создание, осуществляется на странице Data Management - Design Repositories диалогового окна Preferences.
- Репозитории типа Git создаются вне Altium NEXUS, и доступ к локальному рабочему репозиторию Git осуществляется путем открытия файлов из его хост-папки.
- Управление удаленным и локальным репозиториями Git осуществляется, как правило, через корпоративные системы или внешние средства Git, где операции на уровне файлов (фиксация, передача, обновление и т.д.) обрабатываются в среде редактирования Altium NEXUS.
- При использовании управляемых проектов на сервере управляемых данных Altium управление репозиториями осуществляется автоматически.
Подключение к репозиторию SVN
Чтобы подключиться к существующему проектному репозиторию SVN, на странице Data Management – Design Repositories диалогового окна Preferences нажмите кнопку и выберите SVN из соответствующего меню. Будет открыто диалоговое окно SVN Design Repository, в котором представлены настройки Design Repository Properties, позволяющие определить локальное имя подключения к репозиторию и его путь целевой папки для извлечения проектных файлов.
При регистрации существующего репозитория SVN в Altium NEXUS, проектные файлы могут быть включены в систему управления Subversion.
Параметры Repository диалогового окна необходимо настроить в соответствии с расположением доступного репозитория, опциональной целевой подпапкой и совместимым протоколом для подключения. Обратите внимание, что для методов доступа svn
и http
необходима дополнительная информация, которая относится к хост-серверу и учетных данных доступа к нему.
Для получения более подробной информации перейдите на страницы:
► Страница Data Management - Design Repositories диалогового окна Preferences.
► Страница диалогового окна SVN Design Repository.
Создание репозитория SVN
Чтобы создать локальный проектный репозиторий SVN, перейдите на страницу Data Management - Design Repositories диалогового окна Preferences и используйте кнопку , чтобы открыть диалоговое окно Create SVN Design Repository.
Диалоговое окно предлагает ряд опций, которые позволяют определить расположение папки и метод (протокол подключения) репозитория, и локальное имя подключение и путь целевой папки для извлечения проектных файлов. Обратите внимание, что для методов доступа svn
и http
необходима дополнительная информация, которая относится к хост-серверу и доступу к нему. Для получения более подробной информации см. ссылки выше.
Укажите или создайте локальную папку, которая будет настроена в качестве репозитория VCS.
После этого, установленная система VCS создаст корректную структуру файлов и базу данных контроля версий в указанной папке репозитория. После того, как новый репозиторий создан и зарегистрирован, его запись будет отображена в списке на странице Data Management - Design Repositories диалогового окна Preferences. Нажмите или , чтобы подтвердить изменения.
Процесс создания репозитория VCS, который обычно осуществляется с помощью внешнего (отдельного) клиента VCS, можно выполнить непосредственно в диалоговом окне Preferences Altium NEXUS.
Использование репозитория SVN
Когда в Altium NEXUS доступен новый или существующие репозиторий, проектные файлы могут быть добавлены в репозиторий и извлечены из него с помощью панелей Storage Manager и Projects и команд главного меню. Поскольку файлы репозитория находятся под контролем версий, все ревизии отслеживаются из Altium NEXUS.
Используйте команду Add Project Folder to Version Control контекстного меню записи проекта в панелях Storage Manager и Projects для добавления и последующей фиксации всей папки проекта (и входящих в его состав файлов) в контроль версий.
Либо новый проект может быть добавлен в контроль версий при его создании с помощью диалогового окна Create Project – File » New » Project. Выберите Version Control
в списке Locations в левой части диалогового окна и выберите целевой репозиторий из списка зарегистрированных репозиториев в выпадающем меню Repository.
Опция Local Storage в диалоговом окне Create Project определяет, где хранится рабочая копия проекта. Именно эти файлы открываются и редактируются в Altium NEXUS и, в конечном счете, фиксируются в репозитории по завершении редактирования. Рабочую копию проекта можно повторно открыть на редактирование с помощью команды File » Open Project или списка File » Recent Projects.
При необходимости, новый экземпляр проекта можно извлечь в новую рабочую папку и загрузить в Altium NEXUS с помощью команды File » Check Out, как показано ниже.
После того, как совместимый репозиторий VCS стал доступен в Altium NEXUS, проектные файлы могут быть добавлены в репозиторий и извлечены из него.
► Для получения руководства по использованию контроля версий для проектных документов в Altium NEXUS перейдите на страницу Использование контроля версий.
Система контроля версий сервера управляемых данных Altium
Наиболее эффективным видом работы с проектами под контролем версий является использование возможностей сервера управляемых данных Altium. Сервер управляемых данных предлагает расширенную концепцию управляемого проекта, с упрощенным рабочим процессом, полным управлением жизненным циклом, улучшенными возможностями совместной работы и многим другим.
Целевой репозиторий VCS на сервере управляемых данных тесно интегрирован с сервером и Altium NEXUS (при входе на сервер), что устраняет необходимость в определении и настройке отдельных репозиториев VCS. Права доступа пользователя/групп, содержимое репозитория и состояние проектов могут управляться через веб-интерфейс сервера.
Чтобы узнать больше об управляемых проектах, перейдите на страницы:
► Управляемые проекты и выпуск проекта
► Работа с сервером управляемых данных
Дополнительная информация
Терминология контроля версий
Терминология контроля версий
VCS
(Version Control System, Система контроля версий)
|
Version Control System (VCS) – общий термин, применимый к любым средствам, способным управлять историей версий файлов и извлечением файлов.
|
Repository
(Репозиторий)
|
Основное хранилище всех файлов, находящихся в системе контроля версий. Также может называться базой данных (Database).
|
Database
(База данных)
|
Основное хранилище всех файлов, находящихся в системе контроля версий. На практике также называется репозиторием (Repository).
|
Check-in
(Возврат)
|
Сохранение рабочей копии копии файла в репозитории. В Altium NEXUS называется фиксацией (Commit).
|
Check-out
(Извлечение)
|
Создание копии файла из репозитория VCS в рабочей папке. Как правило, это самая новая ревизия файла, но любая предыдущая ревизия также может быть извлечена. В зависимости от VCS, файл может быть отмечен как просто извлеченный, либо как извлеченный исключительно (заблокированный).
|
Commit
(Фиксация)
|
Сохранение рабочей копий файла обратно в репозиторий. Называется возвратом (Check-in) в некоторых системах контроля версий. В Altium NEXUS команда Save сохраняет измененный файл в рабочую папку, в то время как команда Commit сохраняет файл из этой папки в репозиторий в качестве новой ревизии (версии).
|
Push
(Выгрузка) |
Обновление удаленного репозитория Git файлами в его локальном рабочем репозитории для синхронизации локального и удаленного репозиториев. Эта команда доступна, когда файл в локальном репозитории Git является более новым по сравнению с его ответной частью в удаленном репозитории Git. По сути, дополняет команду Pull в Git.
|
Conflict
(Конфликт)
|
Ситуация, когда два пользователя Altium NEXUS пытаются зафиксировать изменения, влияющие на один и тот же участок одного файла. Эта ситуация должна быть разрешена с помощью средства Merge, вручную или определением того, какая версия будет преобладающей (станет новой ревизией).
|
Update
(Обновление)
|
Проверка и обновление изменений из версии файла в репозитории в рабочую копию (дополнение к фиксации Commit или извлечению Check-in). Для слияния любых различий необходимо использование средства Merge или ручное обновление.
|
SVN (Subversion) |
Система контроля версий с открытым исходным кодом. Altium NEXUS включает в себя функциональные возможности SVN (через дополнительный программный модуль VCS Provider - SVN), что позволяет отслеживать и открывать ревизии непосредственно из панелей Storage Manager и Projects.
|
Git
|
Система контроля версий с открытым исходным кодом. Altium NEXUS включает в себя функциональные возможности Git (через дополнительный программный модуль VCS Provider - Git), что позволяет отслеживать и открывать ревизии непосредственно из панелей Storage Manager и Projects.
|
Clone
(Клонирование) |
Команда Git, которая копирует (клонирует) удаленный репозиторий Git в локальную папку, с автоматическим извлечением в эту папку версии HEAD (самой новой версии). Локальный репозиторий включает в себя ссылку на удаленный репозиторий (origin в этом случае), поэтому файлы, измененные в локальном рабочем репозитории, могут быть загружены в удаленный репозиторий с помощью команды Push. |
Working folder
(Рабочая папка)
|
Папка, в которую извлекаются файлы из репозитория, чтобы с ними можно было работать – для Git это локальный рабочий репозиторий. Файлы, извлеченные из Altium NEXUS, загружаются автоматически.
|
Log message
(Сообщение в журнале событий)
|
Комментарий об изменениях ревизии при ее возврате (фиксации) обратно в репозиторий. Сообщения в журнале событий обычно используются как сводка о прогрессе изменений файла.
|
Working copy
(Рабочая копия)
|
Локальная копия файла, с которой проводятся изменения. Обычно находится в рабочей папке (Working Folder).
|
Revision
(Ревизия)
|
Зафиксированное изменение в истории файла или набора файлов. Это числовая ссылка, предоставленная системой контроля версий для отслеживания различных ревизий (версий) файла, которые она содержит.
|
Head
(Основная версия)
|
Самая новая ревизия, зафиксированная в системе контроля версий.
|
Base
(База) |
Ревизия в репозитории, которая была извлечена в локальную рабочую копию (Working Copy). Также называется извлеченной ревизией.
|
Project
(Проект) |
Многие системы контроля версий поддерживают концепцию проекта. Проект VCS является набором связанных файлов, которые могут быть возвращены/извлечены как набор. VCS может также поддерживать другие функции для проектов, такие как задание номера версии всех файлов в проекте. Это отличается от концепции проекта в Altium NEXUS, который можно добавить в систему контроля версий с помощью команды 'Add Project Folder to Version Control'. |
Ссылки
Ссылки