- •Система контроля версий Tortoise svn
- •2.1 Теоретическое введение 8
- •3.1 Теоретическое введение 33
- •Лабораторная работа №1. Установка и настройка распределительной системы контроля версий Tortoise svn. Основные принципы работы.
- •1.1 Теоретическое введение
- •1.2 Установка и настройка серверной части
- •1.3 Установка и настройка клиентской части
- •Лабораторная работа №2. Работа в Tortoise svn с простыми проектами.
- •2.1 Теоретическое введение
- •2.2 Основные операции при работе с Tortoise svn
- •2.3 Браузер репозитория
- •2.4 Создание проекта
- •2.5 Создание рабочей копии
- •2.6 Добавление файлов в рабочую копию
- •2.7 Синхронизация рабочей копии с репозиторием (Теория)
- •Во 2 лабораторной работе Вы работаете только с папкой trunk (ствол), никаких ответвлений (Branches) здесь не используется!!
- •Когда создаете рабочую копию, рабочие копии всех членов бригады должны быть привязаны к одной и той же папке в хранилище.
- •2.8 Изменение и откат файлов
- •2.9 Переименование файлов
- •2.10 Перемещение файлов
- •2.11 Разрешение конфликтов
- •2.12 Использование конкретного номера ревизии файлов и папок.
- •Лабораторная работа №3. Работа в Tortoise svn с масштабными программными проектами.
- •3.1 Теоретическое введение
- •Ic (главное меню приложения)
- •3.2 Работа с ветвлениями
- •3.3 Создание веток и меток
- •3. 4 Важное о ветках
- •3.5 Слияние веток
2.9 Переименование файлов
В процессе работы над проектом Вася и Петя решили, что название файла документации readme.txt не отражает его содержание. И приняли решение о том, что файл нужно переименовать в documentation.txt. Вася выполняет командуПереименовать (Rename)и задает новое имя файла (рисунки 2.22-2.23).
Рисунок 2.22
Рисунок 2.23
В результате выполнения команды файл помечается значком добавления (рисунок 2.24).
Рисунок 2.24
Дело в том, что в SVN команда Rename реализована с помощью механизма Delete-Add, но с автоматическим сохранением истории файла. Переименование изменяет файл в рабочей копии. Для того что бы зафиксировать это изменение в репозитории нужно выполнить Фиксирование (Commit) (рисунок 2.25).
Рисунок 2.25
Что бы отменить переименование нужно выполнить команду Убрать изменения (Revert). Петя, для того что бы файл был переименован в его рабочей копии должен выполнить синхронизацию своей рабочей копии. Для этого он должен выполнить команду Update.
2.10 Перемещение файлов
Петя с Васей решили выделить файлы документации в отдельную папку. Для этого Петя создает в своей рабочей копии папку docи добавляет её под контроль SVN(рисунки 2.26-2.27).
Рисунок 2.26
Рисунок 2.27
Затем, используя технологию DragandDrop (Переместить версированные элементы сюда), Петя правой кнопкой мыши выполняет перенос файлаdocumentation.txt в папку doc (рисунок 2.28).
Рисунок 2.28
В результате папка doc выглядит следующим образом (рисунок 2.29).
Рисунок 2.29
И после фиксации изменений проект в репозитории выглядит следующим образом (рисунок 2.30).
Рисунок 2.30
Важно!Переименовывать, перемещать и удалять файлы, находящиеся под контролем SVN с помощью средств операционной системы нельзя. Данную операцию нужно делать только средствами SVN. Только в этом случае файл будет переименован в репозитории, с сохранением его истории.
Все операции над файлами ведут к изменению рабочей копии, поэтому обязательно нужно фиксировать изменения в репозитории, если ходите сделать эти изменения доступными для всех.
2.11 Разрешение конфликтов
В заключение работы Вася и Петя решили внести в файл документации documentation.txt информацию о себе. Вася зафиксировал изменения на долю секунды раньше, чем Петя. Петя хочет зафиксировать свои изменения (рисунок 2.31).
Рисунок 2.31
Но в результате - это сделать не удается (рисунок 2.32).
Рисунок 2.32
Возникает конфликт версий файла, т.е. файл, который находится в данный момент в репозитории, отличается от файла, который был в репозитории при создании рабочей копии Пети. SVN предлагает Пете синхронизировать его рабочую копию с репозиторием командой Update (рисунок 33).
Рисунок 2.33
Петя получает конфликт файлов в своей рабочей копии. Для каждого конфликтного файла появляется значок с восклицательным знаком в желтом треугольнике (рисунок 2.34).
Рисунок 2.34
В директории появились дополнительные 3 файла.
1. documentation.txt.mine — исходный файл Пети, изменения в котором он собирался зафиксировать в репозитории
2. documentation.txt.r13 – начальное состояние файла в репозитории, который модифицировал Петя в своей рабочей копии. Цифра означает номер ревизии файла
3. documentation.txt.r14 –текущее состояние файла в репозитории, которое содержит изменения сделанные Васей (поэтому номер ревизии и отличается).
Сам файл помечен иконкой конфликтного файла. У Пети есть два варианта как поступить:
1. неправильный вариант — откатить файл до исходного состояния, синхронизировать его с репозиторием и заново внести в него все изменения.
2. правильный вариант — разрешить конфликт средствами SVN. Дополнительные файлы, которые появились в директории, создаются как раз для помощи в этом.
Для разрешения конфликта Петя с помощью команды Разрешить конфликт (EditConflicts) (рисунок 2.35).
.
Рисунок 2.35
Петя смотрит, где именно возник конфликт (рисунок 2.36).
Рисунок 2.36
В TortoiseMerge видно 3 окна:
1. Mine(мой) - в окне представлен файл Пети, который находится в рабочей копии.
2. Theirs(их) - в окне представлен файл Васи, который находится в репозитории. Этот файл не дает зафиксировать изменения Пете, так как файлы находятся в конфликте.
3. Merged(Слитый) - в окне представлен итоговый файл, который останется после слияния файлов mine и theirs и будет зафиксирован в репозитории.
Красные строки в окнах это и есть конфликтующие строки, видно что в файлах Васи и Пети эти строки разные. Оранжевые перечеркнутые строки это строки которые были в файле, при создании рабочей копии или последней синхронизации ее с репозиторием, но были удалены из файла.
Окна просмотра файлов синхронизированы между собой, что очень удобно для просмотра и разрешения конфликтов.
Для устранения конфликта, Петя должен в окне Merged сформировать итоговый файл. Сделать это он может как с помощью контекстного меню окна, в котором находится (доступно по нажатию правой кнопки мыши), так и набирая в окне Merged текст в конфликтующих строках.
Конфликт также можно просмотреть и устранить напрямую в файле documentation.txt (рисунок 2.37).
Рисунок 2.37
В файле видно 3 метки
1. <<<<<<< .mine — это изменения сделанные в Петей в рабочей копии
2. >>>>>>> .r16 — это изменения зафиксированные Васей
3. ======= - строка разделитель между конфликтующими строками в файле
Для разрешения конфликта в ручную, без применения средств автоматизации, нужно исправить код в файле, убрав из него все метки. Сделать это можно в любом текстовом редакторе. Но лучше для этого воспользоваться программой TortoiseMerge, которая вызывается командой Editconflicts.
Петя решает использовать команду Editconflicts и программу TortoiseMerge для слияния файлов (рисунок 2.38).
Рисунок 2.38
Контекстное меню окна Merged предлагает варианты использования строк из Theirs и Mine окон, Петя выбирает команду командуUsetextblockfrom 'theirs' что бы вставить в итоговый файл строку из файла Васи (рисунок 2.39).
Рисунок 2.39
И в ручную дописывает строку Васи в итоговом файле. Устранив все конфликты (в окне Merged больше нет строк красного цвета), Петя сохраняет итоговый файл и выходит из TortoiseMerge.
Что бы конфликт окончательно считался разрешенным нужно удалить все файлы, автоматически созданные для разрешения конфликта. Это можно сделать средствами операционной системы, но лучше всего это делать с помощью команды Resolved (рисунок 2.40).
Рисунок 2.40
Все конфликт разрешен, Петя может фиксировать изменения в репозитории.
Конфликт возникает только в том случае, если два и более автора изменяют строки с одинаковыми номерами. Что и продемонстрировано в данном примере. В случае, если изменяются разные строки, конфликта не будет. Произойдет слияние двух файлов в один (т.е. результирующий файл будет содержать строки из обоих файлов).
Важно!!!! В случае работы с документами MS, редактор, в котором будет происходить улаживание, будет выглядеть иначе. Необходимо будет принять или отклонить конфликты построчно. После того, как все конфликты были улажены, необходимо улаженный документ сохранить в рабочую копию (указать адрес, куда сохраняем). После того, как вы проведете сохранение, в папке появится документ с значком восклицательного знака и два файла формата архива RAR. Их нужно просто удалить, а документ, отмеченный восклицательным знаком, зафиксировать.