Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Система управления версиями.ppt
Скачиваний:
107
Добавлен:
10.09.2019
Размер:
1.48 Mб
Скачать

Конфликт

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

изменения Гарри?

Эта ситуация называется конфликтом и, как правило, это не является большой проблемой.

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

- у Гарри будет возможность видеть оба набора конфликтующих изменений и вручную сделать между ними выбор.

Помните, что ПО не может автоматически разрешать конфликты; только человек способен к пониманию и выполнению осмысленного выбора. Разрешив вручную перекрывающиеся изменения - возможно, после обсуждения с Салли - он может безопасно сохранить объединенный файл обратно в хранилище.

Вывод

Модель копирование-изменение-слияние может выглядеть немного хаотично, однако, на практике она отлично работает.

Пользователи могут работать параллельно, не тратя время на ожидание друг друга.

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

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

Витоге

Все сходится к такому критическому фактору как взаимодействие пользователей.

При плохом взаимопонимании увеличивается количество как синтаксических, так и семантических конфликтов.

Нет системы, которая может повысить уровень взаимопонимания, и нет системы, которая может определять семантические конфликты.

Не стоит возлагать большие надежды на то, что блокирующая система лучше защищена от конфликтов;

На практике блокирование снижает продуктив- ность как ничто другое.

Список основных терминов

Репозиторий (repository) — централизованное хранилище исходных кодов, рабочих материалов и документации. Любое количество клиентов подключается к хранилищу и читает или записывает эти файлы

Рабочая копия/working copy (WC) — обычное дерево каталогов на компьютере, содержащие набор файлов для работы над проектом. Изменения в рабочей копии не доступны для других пользователей репозитория, до тех пор пока они не будут зафиксированы.

Trunk — основное направление разработки

Branch (''Ветка'') - направление разработки, которое существует независимо от другого направления, но имеет с ним общую историю. Ветка всегда берет начало как копия чего-либо и движется от этой точки, создавая свою собственную историю

Tag (''Метка'') — выделенная явно, через создание отдельной папки версия файлов проекта в определенный момент времени.

Revision — номер ревизии репозитория, в пределах репозитория номер ревизии уникальная величина

Checkout – команда, которая выполняет начальное получение проекта из репозитория в WC.

Commit – команда, которая выполняет фиксацию изменений файлов проекта в WC в Репозиторий.

Список основных терминов (продолжение)

Update – команда, которая выполняет обновление файлов проекта в WC из репозитория

Revert – команда, которая выполняет отмену любых изменений в файлах проекта в WC на основе номера ревизии репозитория.

Merge – команда, которая выполняет слияние файлов из разных веток проекта и помещает результат слияния в WC.

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

Resolve – набор правил по разрешению возникающих конфликтов.

Import – команда, для быстрого копирования дерева файлов в Репозиторий.

Export – команда, для экспорта проекта, отличается от checkout тем, что не создает в папках проекта служебную информацию.

Switch – команда, которая выполняет переключение WC на другую ветку разработки.

Create, Add, Delete, Copy, Move, Rename – команды для управления файлами и папками в репозитории или WC.

Структура хранилища (репозитория)

Три основных понятия:

Trunk — основное направление разработки.

Branch («Ветка») — направление разработки, которое существует независимо от другого направления, но имеет с ним общую историю.

Tag («Метка») — выделенная явно через создание отдельной папки версия файлов проекта в определенный момент времени.

Основные концепции

Файловая система

С точки зрения пользователя хранилище Subversion представляет собой «двумерную» файловую систему.

Объекты в хранилище (файлы и директории) идентифицируются двумя «координатами»:

-именем ревизии,

-номером ревизии.

Хранилище представляет собой массив мгновенных снимков (ревизий) дерева файлов и директорий, индексируемый номером ревизии. Каждый такой снимок - обычная (одномерная) файловая система.

При необходимости указания на конкретную ревизию объекта используется запись вида:

-имя@ревизия,

-например, /main.c@29 - файл /main.c в ревизии 29.

Такое указание ревизии, используемое для уточнения имени, называется стержневая ревизия ( peg revision).

Соседние файлы в папке Лекции