отчёт. Веревкин. Народ, жамкайте кнопку чата чтоли для авторизации
Скачать 81.53 Kb.
|
Управление изменениями кода: централизованные системы контроля версийЦентрализованные системы подразумевают наличие выделенного, доступного всем участникам сервера, на котором находится уже известная нам структура проекта: branches tags trunk Такая же структура папок находится и на машине разработчика. При этом разработчик работает с СКВ по клиент-серверной архитектуре. Как только разработчик делает коммит - изменения отправляются на сервер. Проверяется возможность слить новые версии файлов с теми, что есть на сервере и если конфликтов нет - сливание происходит автоматически, иначе разработчику приходит сообщение с просьбой разрешить конфликтную ситуацию. Примером конфликтной ситуации может быть совпадение названия функции в отправляемом файле и в файле на сервере. То есть, кто-то раньше нас уже завел такую функцию и нам предстоит решить, что нужно сделать: или заменить чужую реализацию своей или же переименовать свою функцию. Управление изменениями кода: распределенные системы контроля версийТакже известны как англ. Distributed Version Control System, DVCS. Такие системы используют распределённую модель вместо традиционной клиент-серверной. Они, в общем случае, не нуждаются в централизованном хранилище: вся история изменения документов хранится на каждом компьютере, в локальном хранилище, и при необходимости отдельные фрагменты истории локального хранилища синхронизируются с аналогичным хранилищем на другом компьютере. В некоторых таких системах локальное хранилище располагается непосредственно в каталогах рабочей копии. Вся работа разработчика осуществляется с локальным хранилищем. Изменения разработчика логически являются веткой разработки, в отличие от централизованной модели другие разработчики до синхронизации не видят. По завершении работы осуществляется слияние и разрешение конфликтов. Логика реинтеграции, как и в централизованных системах построена на получении последней версии от партнера, слиянии и размещении синхронизированного репозитория. Слияние версий инициализирует тот, кому нужно получить его результат. К недостаткам распределённых систем можно отнести увеличение требуемого объёма дисковой памяти: на каждом компьютере приходится хранить полную историю версий, тогда как в централизованной системе на компьютере разработчика обычно хранится лишь рабочая копия, то есть срез репозитория на какой-то момент времени и внесённые изменения. Менее очевидным, но неприятным недостатком является то, что в распределённой системе практически невозможно реализовать некоторые виды функциональности, предоставляемые централизованными системами. Это: Блокировка файла или группы файлов (для хранения признака блокировки нужен общедоступный и постоянно находящийся в онлайне центральный сервер). Это вынуждает применять специальные административные меры, если приходится работать с бинарными файлами, непригодными для автоматического слияния. Слежение за определённым файлом или группой файлов (изменения файлов происходят на разных серверах, слияния и выделения ветвей происходят локально, об изменениях становится известно только при синхронизации, причём не всем разработчикам, а только тем, кто в данной синхронизации участвует). Единая сквозная нумерация версий системы и/или файлов, в которой номер версии монотонно возрастает (такая нумерация также требует наличия главного сервера, задающего номера версий для всех остальных). В распределённых системах приходится обходиться локальными обозначениями версий и применять теги, назначение которых определяется соглашением между разработчиками или корпоративными стандартами фирмы. Локальная работа пользователя с отдельной, небольшой по объёму выборкой из значительного по размеру и внутренней сложности хранилища на удалённом сервере. Можно выделить следующие типичные ситуации, в которых использование распределённой системы даёт заметные преимущества: Периодическая синхронизация нескольких компьютеров под управлением одного разработчика (рабочего компьютера, домашнего компьютера, ноутбука и так далее). Использование распределённой системы избавляет от необходимости выделять один из компьютеров в качестве сервера, а синхронизация выполняется по необходимости, обычно при «пересадке» разработчика с одного устройства на другое. Совместная работа над проектом небольшой территориально распределённой группы разработчиков без выделения общих ресурсов. Как и в предыдущем случае, реализуется схема работы без главного сервера, а актуальность репозиториев поддерживается периодическими синхронизациями по схеме «каждый с каждым». Крупный распределённый проект, участники которого могут долгое время работать каждый над своей частью, при этом не имеют постоянного подключения к сети. Такой проект может использовать централизованный сервер, с которым синхронизируются копии всех его участников. Возможны и более сложные варианты — например, с созданием групп для работы по отдельным направлениям внутри более крупного проекта. При этом могут быть выделены отдельные «групповые» серверы для синхронизации работы групп, тогда процесс окончательного слияния изменения становится древовидным: сначала отдельные разработчики синхронизируют изменения на групповых серверах, затем обновлённые репозитории групп синхронизируются с главным сервером. Возможна работа и без «групповых» серверов, тогда разработчики одной группы синхронизируют изменения между собой, после чего любой из них (например, руководитель группы) передаёт изменения на центральный сервер. |