Создание и применение заплаток

В проектах с открытым исходным кодом (подобных этому) у всех есть права доступа для чтения в хранилище, и любой может внести свой вклад в проект. А как контролируются все эти вклады? Если каждый может вносить изменения, проект постоянно будет нестабильным и, возможно, постоянно неработоспособным. В этой ситуации управление изменениями осуществляется через отправку файла заплатки команде разработчиков, у которых есть доступ для записи. Они могут сначала отрецензировать заплатку, и затем или принять и отправить её в хранилище, или отклонить и вернуть автору обратно.

Файл заплатки - это просто файл объединённых различий, показывающий различия между вашей рабочей копией и базовой ревизией.

Создание файла заплатки

Сначала вы должны сделать и проверить ваши изменения. Затем, вместо использования на родительской папке TortoiseSVNФиксировать..., выберите TortoiseSVNСоздать заплатку...

Рисунок 4.59. Диалог создания заплатки

Диалог создания заплатки

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

Столбцы в этом диалоге могут настраиваться таким же образом, как и столбцы в диалоге Проверка на наличие изменений. Прочтите «Локальный и удалённый статус» если вам необходима дополнительная информация.

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

Вы можете создать несколько заплаток, содержащих изменения в различных наборах файлов. Конечно, если вы создадите файл заплатки, произведёте ещё какие-либо изменения в тех же файлах, и после этого создадите другую заплатку, этот второй файл заплатки будет включать оба набора изменений.

Просто сохраните файл, назвав его по собственному выбору. У файлов заплаток может быть любое понравившееся вам расширение, но по соглашению должно использоваться расширение .patch или .diff. Теперь вы готовы отправить ваш файл заплатки.

Подсказка

Не сохраняйте файл заплатки с расширением .txt если вы планируете его послать по e-mail кому-то другому. Обычные текстовые файлы часто повреждаются e-mail программами и часто случается, что пробельные символы и символы новых строк автоматически конвертируются и сжимаются. Если такое происходит, то заплатка не будет применена корректно. Поэтому используйте .patch или .diff в качестве расширения при сохранении файла заплатки.

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

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

Применение файла заплатки

Файлы заплаток применяются к вашей рабочей копии. Применение должно производиться на том же уровне папок, который был использован для создания заплатки. Если вы этот уровень не знаете точно, просто посмотрите на первую строку файла заплатки. Например, если первый обрабатываемый файл был doc/source/english/chapter1.xml и первая строка в файле заплатки выглядит как Index: english/chapter1.xml, то вам необходимо применить заплатку к папке doc/source/. Однако, в том случае, если вы пытаетесь применить заплатку в надлежащей рабочей копии, и вы указали неверный уровень папки, TortoiseSVN это заметит и предложит правильный уровень.

Для того, чтобы применить файл заплатки к вашей рабочей копии, вы должны иметь как минимум доступ для чтения в хранилище. Причина этого в том, что программа слияния должна соотнести изменения с той прошлой ревизией, относительно которой они были сделаны удалённым разработчиком.

Из контекстного меню этой папки выберите TortoiseSVNПрименить заплатку... Появится диалог открытия файла, позволяющий выбрать файл заплатки для применения. По умолчанию отображаются только файлы с расширением .patch или .diff, но вы можете выбрать для показа и «Все файлы». Если вы до этого сохранили заплатку в буфере обмена, можно воспользоваться кнопкой Открыть из буфера обмена в диалоге открытия файла. Имейте ввиду, эта опция появляется только если вы сохранили заплатку в буфер обмена при помощи TortoiseSVNСоздать заплатку.... Копирование заплатки в буфер обмена из другого приложения не приведёт к появлению кнопки.

Или, если файл заплатки имеет расширение .patch или .diff, вы можете щёлкнуть на нём правой клавишей мыши и выбрать TortoiseSVNПрименить заплатку.... В этом случае у вас будет запрошено расположение рабочей копии.

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

Как только вы выбрали файл заплатки и расположение рабочей копии, запускается TortoiseMerge для слияния изменений из файла заплатки с вашей рабочей копией. В небольшом окне перечислены файлы, которые были изменены. Выполните двойной щелчок на каждом файле по очереди, просмотрите изменения, и сохраните слитые файлы.

Теперь, когда заплатка удалённого разработчика была применена к вашей рабочей копии, вам надо зафиксировать результат, чтобы все остальные смогли получить эти изменения из хранилища.