M.A.X.    Вы вошли как гость
Российский Клуб игроков M.A.X.
 
[Новости]   [Новичку]   [Энциклопедия]   [Документы]   [Файлы]   [Игроки]   [Архивы]   [Архив форума]  
[Новый сайт]   [M.A.X. Gold]   [Партии]  

 
 
 
Архив форума  МаксГолд
[Основной форум] [Голосования] [МаксГолд] [Off-Topic]
 


Работа с Черепешкой (TortoiseSVN How-To)  -  Hruks,  31.05.2010  8:24:16

С чего начать
Начать стоит с установки TortoiseSVN(http://tortoisesvn.net/downloads).
Далее можно получить локальную версию проекта.
Для компиляции нужен компилятор Delphi или FP.
Для Delphi в файлах maxg.cfg и maxg.dof нужно прописать пути так, как указано в комментариях в maxg.dpr
Для запуска проекта необходимо выполнить действия, содержащиеся в readme.txt выкладываемого релиза.

Получить локальную версию проекта - Checkout.
Нужно определиться, где будет располагаться локальная копия. Например в папке C:/Projects/MAXGold. Нужно создать соответствующие папки.
Далее открываем созданную папку в проводнике Windows и щёлкаем правой кнопкой мышки.
В появившемся меню находим пункт SVN Checkout.
В диалоговом окне Checkout вводим:
URL of repository: svn://maxgold.rumaxclub.ru:46022/maxgold/trunk
Checkout directory: C:/Projects/MAXGold
Остальные параметры оставляем по умолчанию.
Нажимаем OK
Появляется диалог trunk - Checkout - Tortoise SVN.
Процесс занимает некоторое время, необходимое для скачивания файлов и создания необходимой структуры папок для корректной работы SVN.
После окончания процесса кнопка OK станет доступна. Можно её нажать.

Посмотреть историю изменений - Show Log
Для просмотра истории изменений на ветке, которая сейчас установлена, достаточно вызвать контекстное меню проводника и выбрать пункт SVN Show Log
Появится окно Log Messages, разделённое на 3 части.
В верхней части будет список изменений. Указывается номер ревизии (уникальное число, увеличивающееся для каждого вносимого изменения во всех папках и ветках), иконки действий (чем сопровождались изменения), автор изменений, Дата и время изменений, сообщение. В списке можно выделять строки для просмотра детальной информации.
Чтобы посмотреть более ранние изменения нужно нажать кнопку Next 100 или Show All.
2 области ниже соответствуют выделенной записи в верхнем списке и показывают многострочный комментарий к изменениям и список изменённых файлов, а также характер изменения по каждому файлу.
Дважды щёлкнув на файле из списка можно посмотреть дельту изменений по конкретному файлу.
Историю изменений можно смотреть как по всему проекту, так и по отдельным веткам, файлам и папкам.
Для этого нужно выбрать пункт SVN Show Log для соответствующего элемента. Искать можно в проводнике Windows или SVN Repo-browser.
Для просмотра истории изменений в отдельной ветке нужно либо переключить проект на эту ветку (Switch), либо воспользоваться SVN Repo-browser и найти необходимую ветку.

Обновить локальную версию до последней версии в репозитории - Update.
Для синхронизации локальной версии с сервером нужно выбрать пункт SVN Update контекстного меню для элемента локального проекта, который нужно обновить. Обычно это корневая папка проекта.
Перед обновлением можно посмотреть историю изменений, чтобы решить, нужно ли обновляться.
В процессе обновления будет указано, какие файлы были обновлены, был ли автоматический мёрж и были ли конфликтные изменения, требующие вмешательства пользователя.
После обновления в диалоге можно нажать кнопку Show log... для вывода списка изменений за это обновление и просмотра дельты изменений.

Посмотреть дельту изменений в репозитории - Show log
Для просмотры дельты изменений нужно воспользоваться SVN Repo-browser или локальной копией проекта и вывести историю изменений для интересующего элемента (обычно корневая папка проекта - trunk, или ветка Разработчика). В списке изменений есть список изменённых файлов и для каждого можно посмотреть дельту в конкретном файле.

Просмотр локальных изменений - Check for modification
Для просмотра локальных изменений можно воспользоваться списком изменений при внесении изменений в SVN (команда SVN Commit...), либо выбором команды Check for modification.
Появляется список файлов, двойной щелчок на которых, приводит к открытию диалога сравнения файлов - отображения дельты.
При внесении изменений обязательно нужно посмотреть дельту.

Посмотреть какие вообще есть ветки - Repo-browser
Для этого можно воспользоваться SVN Repo-browser.
Нужно в окне Repository Browser дважды щёлкнуть на корневом элементе svn://maxgold.rumaxclub.ru:46022/maxgold, раскрыть поддерево, нажав на квадратик с + и также на папке branches. Покажется список веток, созданных разработчиками.
Выбор ветки производится левым щелчком.
Правый щелчок на ветке позволяет посмотреть изменения на данной ветке (Show Log).

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

Подготовка к внесению изменений разработчиком
Разработчик должен создать ветку в папке branches для внесения любых изменений.

Создание ветки для внесения изменений - Branch
Для создания ветки нужно в папке проекта вызвать контекстное меню и выбрать пункт Branch/Tag...
В появившемся окне Copy(Branch/Tag) нужно ввести полный путь к новой ветке: svn://maxgold.rumaxclub.ru:46022/maxgold/branches/ИМЯ_НАЗВАНИЕ.
Например svn://maxgold.rumaxclub.ru:46022/maxgold/branches/hruks_IconsFix
Указывать комментарии (Log message) при создании ветки не обязательно.
Полезно всегда включать галочку Switch working copy to new branch/tag для переключения всех уже сделанных изменений на рабочую ветку. Иначе внесение этих изменений может произойти не в ветку а в trunk.
Также после создания ветки можно переключить локальную версию на эту ветку. Это же дается при выбранной галочке при создании ветки.
В SVN создаётся запись, что была создана ветка. Все дальнейшие действия над файлами и папками в ветке записываются уже по этой ветке. Копирования файлов не происходит, поэтому ветки можно создавать безболезненно, относительно занимаемого места на диске.

Внесение изменений под систему контроля версий (Commit)
После тестирования изменений их можно внести в систему контроля версий.
Для этого нужно выбрать команду SVN Commit…
Обычно эта команда выбирается для коневой папки проекта, но может быть использована для любого файла или папки локальной копии проекта.
Появится диалоговое окно Commit
Необходимо ввести комментарий для истории изменений. Для этого служит верхнее поле. Список последних записей можно увидеть нажав кнопку Recent messages.
Далее следует проверить дельту по каждому файлу из списка.
Список файлов отображается в нижней половине окна.
Каждый файл сопровождается местом под галочкой (попадает ли он в список внесения изменений), имя и путь к файлу, относительно корня проекта, расширение, статус (что будет с файлом - редактируется, добавляется, удаляется).
Двойной щелчок по файлу открывает диалог сравнения версий файлов (дельту), в котором удобно можно посмотреть сделанные изменения в файле. Файл можно редактировать в этом диалоге.
В случае ненужных изменений с файла либо снимается галочка (изменения нужны, но не для этого внесения изменений) либо полностью отменяются (правой кнопкой и Revert...).
Новые файлы не помечены галочкой. Стоит выбрать для этих файлов пункт Add контекстного меню.
Если файл лишний в проекте, то его сразу можно удалить (правой кнопкой и Delete).
Нажатие кнопки OK приводит к внесению изменений.

Переключиться на ветку для инспекции кода - Switch (или для просмотра изменений, сделанных на рабочей ветке)
Для инспекции кода можно посмотреть дельту через Repo-Browser, Но для тестирования изменений нужно скомпилировать проект. Так что лучше сразу переключить локальную копию на нужную ветку.
Перед переключением необходимо убедиться, что все локальные изменения внесены под контроль версий. Иначе текущие изменения смёржится с переключаемой веткой и могут оказать влияние на работу проекта.
Нужно либо внести все изменения, либо воспользоваться ещё одной локальной версией проекта.
Исключением являются общие изменения, необходимые для любых версий проекта, например для отладочных целей или тестирования.

Слияние (мёрж) изменения с рабочей ветки в trunk - Merge
Перед мёржем изменений нужно их протестировать. Тестировать иногда удобно переключившись в новую ветку, а иногда лучше тестировать при мёрже.
Перед мёржем нужно переключить локальную версию в trunk (или в ту версию, в которую нужно мёржить). Для этого есть команда Switch. В поле To URL нужно ввести полный путь к ветке, например svn://maxgold.rumaxclub.ru:46022/maxgold/branches/hruks_IconsFix. Можно также воспользоваться кнопкой … и выбрать ветку из Repo-browser. Кнопка OK осуществит переключение.
После переключения в trunk выполняется слияние версий Merge….
На первом шаге визарда Merge нужно выбрать пункт Merge a range of revisions и нажать Next.
На втором шаге в поле URL to merge from нужно указать ветку, которую нужно вмёржить в trunk, например svn://maxgold.rumaxclub.ru:46022/maxgold/branches/hruks_IconsFix. Кнопка с 3 точками позволит выбрать ветку в Repo-Browser.
Если нужна только часть изменений, то следует заполнить поле Revision range to merge. Лучше сделать это по истории изменений данной ветки, показываемой по кнопке Show log. Нажимаем Next и переходим к след. шагу.
На следующем шаге (Merge options) следует оставить всё по умолчанию.
Можно воспользоваться кнопкой Test merge, чтобы убедиться, что всё в порядке и не много конфликтов при слиянии версий.
Кнопка Merge производит слияние версий.
В случае конфликтов нужно найти записи, отмеченные красным и в редакторе устранить конфликты (редактор показывается двойным кликом), поиск конфликта в редакторе - красные стрелки вверх/вниз.
Двойной щелчок на любой записи покажет дельту изменений при мёрже.
Далее изменения можно тестировать.
Список локальных и вмёрженых изменений можно посмотреть как обычно, либо при внесении изменений, либо выбрав опцию Check for modification.
После тестирования и корректировки изменения следует внести под систему контроля версий (Commit).
При операциях слияния версий (Merge) производится запись о факте слияния (Merge info). Эта запись помещается в папку. Выглядит как внесение изменения в папку. Такие изменения не обязательны к внесению под систему контроля версий, так как они начинают сильно расползаться в размере. При внесении изменений можно не вносить запись о слиянии, либо выполнить команду Revert для элемента папки при операции Commit. Остальные изменения при этом останутся.

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

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

Отменить локальные изменения
Для отмены изменений во всём файле есть опция Revert.
Если же нужно отменить изменений только в конкретных строчках, то следует скорректировать эти строки до внесения изменений.

Файловые операции в папках локальной версии проекта
Файловые операции нужно производить очень осторожно.
Допускается свободное добавление и удаление файлов, как добавленных, так и находящихся под контролем версий. А вот папки переносить следует через Repo-browser, либо заботиться о svn информации в них.
Дело в том, как SVN хранит информацию о файлах и папках. В каждой папке с файлами, находящимися под контролем версий есть скрытая папка с рабочей информацией. При переносе папок, эта информация не обновляется, если перенос был не средствами SVN.
В случае возникновения проблем с локальной копией следует воспользоваться опциями Revert и Clean Up.
Если нужно удалить локальную копию, удаляйте всю папку, вместе со скрытыми вложенными папками.

Взять Чистый релиз (без рабочей svn информации)
Для получения чистого релиза есть команда Export..., которая аналогична команде Checkout, но не добавляет скрытых папок и служит для создания релизных копий проектов.

Изменения на общей ветке
Если над одной веткой работают несколько разработчиков, перед командой Commit рекомендуется делать Update, во избежание конфликтов.

Удалить файл
Если были удалены какие-то файлы - команда Update их восстановит - в таком случае рекомендуется удалять их соответствующей командой из меню TortoiseSVN. При внесении изменений такие файлы будут удалены. Однако до внесения изменений файлы останутся.

Обычный цикл работы
Вообще цикл работы с SVN должен быть примерно следующим:
1. Получаем локальную версию: Checkout/Update.
2. Делаем изменения/добавляем/удаляем что нужно.
3. Тестируем.
4. Update.
5. Решаем конфликты (если есть). Тестируем.
6. Commit.
Правило хорошего тона:
На SVN заливаем только если сборка компилируется без проблем.


Редактировано Hruks 31.05.2010 8:24:16