Creating A Patch/ru
Deutsch · English · Español · Français · Português · Slovenčina · Русский · 日本語
Если вы хотите отправить улучшения в код FPC или Lazarus, вам нужно отправить патч, который разработчики могут легко слить с исходным кодом.
Исключения:
- файлы перевода .po следует отправлять как целые файлы
- новые файлы должны быть отправлены как целые файлы с указанием места их размещения
Требования
Вам нужны версии Lazarus (или FPC) trunk/для разработки. Вы можете получить Lazarus(и FPC), используя SVN или Git.
- Git: Getting Lazarus development version. This is the native repository.
- SVN:
svn checkout --depth files <https://github.com/fpc/Lazarus/branches> all
cd all
svn update --set-depth infinity mainsvn checkout --depth files <https://github.com/fpc/FPCSource/branches> all
cd all
svn update --set-depth infinity mainПредупреждение: Если вы отправляете исправления,не создавайте их на основе стабильных версиий Lazarus/FPC. Обычно версия для разработки сильно отличается от стабильной версии, так как разработчики применили множество улучшений и исправлений.
Отличия платформы
В инструкциях ниже предполагается, что вы открыли командную строку и переместились (команда cd) в каталог хранилища. Вот подробности:
Windows
Предполагая, что вы извлекли Lazarus в C:\lazarus, откройте командную строку (cmd.exe) и введите «cd \lazarus».
*nix systems
Предполагая, что вы извлекли Lazarus в ~/lazarus, откройте терминал и наберите "cd ~/lazarus".
Создание патча с использованием SVN
svn diff > mypatch.diffЭто включает в себя все измененные файлы во всем хранилище SVN.
Вы также можете определить отдельные файлы, чтобы убедиться, что туда не попал мусор, например. :
svn diff ide/main.pp ideintf/objectinspector.pp > mypatch.diffПримечание: Если вы используете TortoiseSVN в Windows, вы можете выбрать папку, в которую Lazarus был извлечен в Windows Explorer, а затем щелкнуть правой кнопкой мыши, чтобы выбрать TortoiseSVN-> Create Patch(Создать патч) ...
См.также Разрешение проблем, если у вас имеются проблемы .
Создание патча с помощью Git
Во-первых, разрабатывайте свой код в отдельной ветке!
Пока ваша ветка разработки активна, вы можете создавать патчи всех ваших локальных коммитов:
git format-patch masterЭто создает набор исправлений с именами, такими как "0001-CommitMsg.patch", "0002-CommitMsg.patch" и так далее.
Если вы хотите, чтобы все изменения были внесены в один патч, либо объедините коммиты, используя "git rebase -i ...", либо используйте следующую команду:
git format-patch master --stdout > mypatch.patchОтправка патча
Теперь у вас есть патч. Я бы посоветовал еще раз просмотреть файл, чтобы убедиться, что он выглядит нормально (без неожиданных изменений).
Рекомендуемый способ отправки патча - через bug tracker, подробности см. Как создать отчет об ошибке. Если есть отчет о проблеме, исправляемой вашим патчем, используйте ее, в противном случае создайте новую проблему. Загрузите файл, чтобы прикрепить его к проблеме.
Использование веток Git-репозитория напрямую
Можно использовать Git распределенным образом и для разработки Lazarus. По крайней мере, разработчики JuhaManninen и Alexander Klenin ("Ask") готовы принимать код в Git-репозитории.
На практике хранилище должно быть разветвлено из зеркала Lazarus в GitHub. Код должен быть в отдельной ветке и перебазирован от ветки "upstream". Это еще не проверено, мы можем добавить больше деталей, когда кто-то на самом деле ответвится от репо и создаст код.
Ограничением этой модели является то, что код должен принадлежать к области компетенции разработчиков, работающих с Git. Если код находится за пределами этой области, вы все равно можете использовать Git, но вы должны создавать патчи и отправлять их в bug tracker.
Применение патча
Это объясняет, как применить чей-то патч к вашему локальному репозиторию. Вы можете протестировать патч с помощью переключателя --dry-run следующим образом:
patch --dry-run < somepatch.diffВывод патченной программы будет идентичен действительному исправлению, только это не изменит файлы исходного кода. Очень удобно для тестирования, без вероятности испортить ваш исходник.
Патч, созданный с помощью "svn diff"
Для окончательного исправления используйте следующую командную строку:
patch < somepatch.diffЕсли это не сработает, потому что макет пути вашей среды выполнения отличается от среды выполнения, в которой было создано исправление, вы можете указать patch' у удалить всю информацию о путях:
patch -p0 < somepatch.diffЛюбой инструмент с графическим интерфейсом для diff'ов в Windows также может обрабатывать эти патчи, включая TortoiseMerge.
Патч, созданный с помощью "git format-patch"
Git
Сам Git применяет патч так:
git apply 0001-gitpatch.patchpatch
Команда "patch" теперь поддерживает патчи в формате git с параметром -p1. Это проверено с патчем v.2.6.1 в Linux, старые версии могут не поддерживать его.
patch -p1 < 0001-gitpatch.patch"patch" также доступен для Windows, но есть инструменты и для работы с графическим интерфейсом.
TortoiseMerge
TortoiseMerge поддерживает исправление формата Git без проблем. Он устанавливается вместе с Tortoise SVN, но не встроен в проводник. Он должен быть открыт из меню «Пуск».
ToDo: добавить больше инструментов с графическим интерфейсом, которые поддерживают патчи формата Git
Устранение неполадок
Наконец, патчи могут иметь конец строки Unix/Linux (LF), в то время как ваш локальный файл имеет конец строки Windows (CR+LF) или наоборот. Вам придется преобразовать файл патча перед применением по крайней мере в Windows, так как прилагаемый файл patch.exe требователен к окончанию строки.
В Windows patch.exe, поставляемый с FPC/Lazarus, очень требователен; возможно, вам повезет больше с patch.exe, поставляемым Git:
"C:\Program Files (x86)\Git\bin\patch.exe" -p0 < mypatch.diff... или команда svn patch, доступная с SVN 1.7.
См.также
- Как мне создать отчет об ошибке - общая информация о том, как отправлять сообщения об ошибках, что следует освещать в отчете об ошибках и как использовать систему отслеживания ошибок.
- Советы по написанию отчетов об ошибках - подробная информация о том, что следует освещать в отчете об ошибках.
- Отчет об ошибках базы данных - cпециальная информация и примеры программ для ошибок базы данных.
- Модерирование багтрекера
From the Free Pascal wiki, page "Creating A Patch/ru", as the Internet Archive kept it on 2022-06-06, last changed on 2022-01-14. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
