Sign in Join
Wiki copytemporary

Creating A Patch/ru: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: Creating A Patch/ru

OldNewLine
1+Если вы хотите отправить улучшения в код FPC или Lazarus, вам нужно отправить патч, который разработчики могут легко слить с исходным кодом.
2+
3+Исключения:
4+
5+1. файлы перевода .po следует отправлять как целые файлы
6+2. новые файлы должны быть отправлены как целые файлы с указанием места их размещения
7+
8+## Требования
9+
10+Вам нужны версии Lazarus (или FPC) **trunk/для разработки**. Вы можете получить Lazarus(и FPC), используя SVN или Git.
11+
12+- Git: [[Getting Lazarus|Getting Lazarus development version]]. This is the native repository.
13+- SVN:
14+
15+`svn checkout --depth files `[`https://github.com/fpc/Lazarus/branches`](https://github.com/fpc/Lazarus/branches)` all`\
16+`cd all`\
17+`svn update --set-depth infinity main`
18+
19+`svn checkout --depth files `[`https://github.com/fpc/FPCSource/branches`](https://github.com/fpc/FPCSource/branches)` all`\
20+`cd all`\
21+`svn update --set-depth infinity main`
22+
23+> **Warning:** **Если вы отправляете исправления, <u>не</u> создавайте их на основе стабильных версиий Lazarus/FPC. Обычно версия для разработки сильно отличается от стабильной версии, так как разработчики применили множество улучшений и исправлений.**
24+
25+## Отличия платформы
26+
27+В инструкциях ниже предполагается, что вы открыли командную строку и переместились (команда cd) в каталог хранилища. Вот подробности:
28+
29+### Windows
30+
31+Предполагая, что вы извлекли Lazarus в C:\lazarus, откройте командную строку (cmd.exe) и введите «cd \lazarus».
32+
33+### *nix systems
34+
35+Предполагая, что вы извлекли Lazarus в ~/lazarus, откройте терминал и наберите "cd ~/lazarus".
36+
37+## Создание патча с использованием SVN
38+
39+``` bash
40+svn diff > mypatch.diff
41+```
42+
43+Это включает в себя все измененные файлы во всем хранилище SVN.
44+
45+Вы также можете определить отдельные файлы, чтобы убедиться, что туда не попал мусор, например. :
46+
47+``` bash
48+svn diff ide/main.pp ideintf/objectinspector.pp > mypatch.diff
49+```
50+
51+> **Note:** Если вы используете [TortoiseSVN](https://tortoisesvn.net/about.html) в Windows, вы можете выбрать папку, в которую Lazarus был извлечен в Windows Explorer, а затем щелкнуть правой кнопкой мыши, чтобы выбрать TortoiseSVN-\> Create Patch(Создать патч) ...
52+
53+См.также [[TortoiseSvn|Разрешение проблем]], если у вас имеются проблемы .
54+
55+## Создание патча с помощью Git
56+
57+Во-первых, разрабатывайте свой код в отдельной ветке!
58+
59+Пока ваша ветка разработки активна, вы можете создавать патчи всех ваших локальных коммитов:
60+
61+``` bash
62+git format-patch master
63+```
64+
65+Это создает набор исправлений с именами, такими как "0001-CommitMsg.patch", "0002-CommitMsg.patch" и так далее.
66+
67+Если вы хотите, чтобы все изменения были внесены в один патч, либо объедините коммиты, используя "git rebase -i ...", либо используйте следующую команду:
68+
69+``` bash
70+git format-patch master --stdout > mypatch.patch
71+```
72+
73+## Отправка патча
74+
75+Теперь у вас есть патч. Я бы посоветовал еще раз просмотреть файл, чтобы убедиться, что он выглядит нормально (без неожиданных изменений).
76+
77+Рекомендуемый способ отправки патча - через [bug tracker](http://bugs.freepascal.org), подробности см. [[How do I create a bug report/ru|Как создать отчет об ошибке]]. Если есть отчет о проблеме, исправляемой вашим патчем, используйте ее, в противном случае создайте новую проблему. Загрузите файл, чтобы прикрепить его к проблеме.
78+
79+## Использование веток Git-репозитория напрямую
80+
81+Можно использовать Git распределенным образом и для разработки Lazarus. По крайней мере, разработчики JuhaManninen и Alexander Klenin ("Ask") готовы принимать код в Git-репозитории.
82+
83+На практике хранилище должно быть разветвлено из зеркала Lazarus в GitHub. Код должен быть в отдельной ветке и перебазирован от ветки "upstream". Это еще не проверено, мы можем добавить больше деталей, когда кто-то на самом деле ответвится от репо и создаст код.
84+
85+Ограничением этой модели является то, что код должен принадлежать к области компетенции разработчиков, работающих с Git. Если код находится за пределами этой области, вы все равно можете использовать Git, но вы должны создавать патчи и отправлять их в bug tracker.
86+
87+## Применение патча
88+
89+Это объясняет, как применить чей-то патч к вашему локальному репозиторию. Вы можете протестировать патч с помощью переключателя --dry-run следующим образом:
90+
91+``` bash
92+patch --dry-run < somepatch.diff
93+```
94+
95+Вывод патченной программы будет идентичен действительному исправлению, только это не изменит файлы исходного кода. Очень удобно для тестирования, без вероятности испортить ваш исходник.
96+
97+### Патч, созданный с помощью "svn diff"
98+
99+Для окончательного исправления используйте следующую командную строку:
100+
101+``` bash
102+patch < somepatch.diff
103+```
104+
105+Если это не сработает, потому что макет пути вашей среды выполнения отличается от среды выполнения, в которой было создано исправление, вы можете указать *patch*'у удалить всю информацию о путях:
106+
107+``` bash
108+patch -p0 < somepatch.diff
109+```
110+
111+Любой инструмент с графическим интерфейсом для diff'ов в Windows также может обрабатывать эти патчи, включая TortoiseMerge.
112+
113+### Патч, созданный с помощью "git format-patch"
114+
115+#### Git
116+
117+Сам Git применяет патч так:
118+
119+``` bash
120+git apply 0001-gitpatch.patch
121+```
122+
123+#### patch
124+
125+Команда "patch" теперь поддерживает патчи в формате git с параметром -p1. Это проверено с патчем v.2.6.1 в Linux, старые версии могут не поддерживать его.
126+
127+``` bash
128+patch -p1 < 0001-gitpatch.patch
129+```
130+
131+"patch" также доступен для Windows, но есть инструменты и для работы с графическим интерфейсом.
132+
133+#### TortoiseMerge
134+
135+TortoiseMerge поддерживает исправление формата Git без проблем. Он устанавливается вместе с Tortoise SVN, но не встроен в проводник. Он должен быть открыт из меню «Пуск».
136+
137+ToDo: добавить больше инструментов с графическим интерфейсом, которые поддерживают патчи формата Git
138+
139+### Устранение неполадок
140+
141+Наконец, патчи могут иметь конец строки Unix/Linux (LF), в то время как ваш локальный файл имеет конец строки Windows (CR+LF) или наоборот. Вам придется преобразовать файл патча перед применением по крайней мере в Windows, так как прилагаемый файл patch.exe требователен к окончанию строки.
142+
143+В Windows patch.exe, поставляемый с FPC/Lazarus, очень требователен; возможно, вам повезет больше с patch.exe, поставляемым Git:
144+
145+```dos
146+"C:\Program Files (x86)\Git\bin\patch.exe" -p0 < mypatch.diff
147+```
148+
149+... или команда svn patch, доступная с SVN 1.7.
150+
151+## См.также
152+
153+- [[How do I create a bug report/ru|Как мне создать отчет об ошибке]] - общая информация о том, как отправлять сообщения об ошибках, что следует освещать в отчете об ошибках и как использовать систему отслеживания ошибок.
154+- [[Tips on writing bug reports|Советы по написанию отчетов об ошибках]] - подробная информация о том, что следует освещать в отчете об ошибках.
155+- [[Database bug reporting|Отчет об ошибках базы данных]] - cпециальная информация и примеры программ для ошибок базы данных.
156+- [[Moderating the bug tracker/ru|Модерирование багтрекера]]
157+
158+---
159+*From the Free Pascal wiki, page "Creating A Patch/ru", as it stood on 2022-01-13 after a change by Trev, out of the wiki's dump of 2024-05-26. 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](/wiki-contact).*

Back to history