Creating A Patch/ru

From Free Pascal wiki
Jump to: navigation, search

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) português (pt) русский (ru) slovenčina (sk)

Инструкции по созданию патча

Предполагается, что Вы используете SVN версию Lazarus-а. Как получить Lazarus через SVN


Для Windows:

Откройте командную строку (Пуск->Выполнить->cmd) Предположим, что рабочая версия Лазаруса у находится в C:\lazarus (если Лазарус находится в другой папке, вам следует указать нужную в команде 'cd')

вводите следующие команды

cd c:\lazarus
svn diff > mypatch.diff

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

Для Linux/BSD/MacOSX и т.п.:

Предположим что Лазарус находится в директории: $HOME/lazarus

откройте любую используемую программу терминала: введите следующие команды:

 cd $HOME/lazarus 
 svn diff > mypatch.diff


В обоих случаях (Windows/*nix), по окончанию работы команды svn diff патч, будет записан в файле mypatch.diff (Если файл mypatch.diff существовал до запуска команды, то он будет перезаписан!)

Заметка: Просмотрите файл с патчем, чтобы в него не попали ненужные изменения


Лучше всего отправлять патчи, через баг трекер. Если Вы предоставляете патч, к уже известной ошибке, то Вам следует приложить патч, к соответствующему сообщению (bug issue). Если Ваш патч, исправляет ошибку, которой о которой ещё не сообщено, Вам следует создать новое сообщение об ошибке. Баг трекер позволит отслеживать, принят патч или нет.

Вы так же можете отправить патч на почтовую рассылку. Предварительно запакуйте файл (размер не должен превышать 40 килобайт), с помощью zip или gzip (не используйте другие архиваторы). Вы также можете послать по этому адресу patch@lazarus.dommelstein.net. Убедитесь, что в subject-e письма указано хотя бы слово patch, иначе письмо может быть отрезано спам-фильтром.

Применение изменений

Для автоматического изменения кода, в соответствии с имеющимся патч-файлом, используется утилита "patch"


Для Windows при установленном Лазарусе она находится в папке

lazarus\fpc\bin\*версия компилятора*\patch.exe

Для Unix-систем утилита обычно устанавливается вместе с установкой binutils. В MacOSX утилита устанавливается вместе с Xcode.


Перед внесением изменений, рекомендуется проверить, сможет ли утилита успешно внести изменения в существующий код. Это выполняется следующей командой:

  patch --dry-run < mypatch.diff

где mypatch.diff - имя патч файла.

Сообщения, выдаваемые программой Patch, будут такими же, как и при внесении изменений, но исходный код не будет изменён. Удобно тем, что помогает избежать нежелательного частичного изменения существующего кода.

пример успешного применения патча:

  $ patch --dry-run < svnclasses.pas.diff
  patching file svnclasses.pas
  Hunk #2 succeeded at 980 (offset 1 line).

пример ошибки при применении патча:

  $ patch --dry-run < svnclasses.pas.diff
  patching file svnclasses.pas
  2 out of 2 hunks ignored -- saving rejects to file svnclasses.pas.rej


Если никаких проблем не возникло, патч можно смело применять, следующей командой:

  patch < mypatch.diff

для тех патчей, где участвую файлы из поддиректорий:

  patch -p0 < mypatch.diff

Tortoise SVN

В TortoiseSVN встроена возможность применения патча.