mirror of
https://github.com/smmarty/friflex_flutter_starter.git
synced 2025-12-22 01:20:46 +00:00
30 lines
3.8 KiB
Markdown
30 lines
3.8 KiB
Markdown
|
|
### Управление сгенерированными файлами
|
|||
|
|
|
|||
|
|
На проекте встречаются файлы, автоматически создаваемые инструментами генерации кода
|
|||
|
|
(например, файлы с расширениями *.g.dart, *.freezed.dart,
|
|||
|
|
а также файлы, связанные с protobuf и другими генераторами кода).
|
|||
|
|
Необходимость контролировать такие файлы в репозитории вызывает ряд обсуждений.
|
|||
|
|
См [issue](https://github.com/smmarty/flutter_team/issues/22).
|
|||
|
|
|
|||
|
|
### Проблемы включения сгенерированных файлов в репозиторий
|
|||
|
|
|
|||
|
|
1. Частые изменения. Сгенерированные файлы могут автоматически обновляться даже при отсутствии изменений в исходном коде, что приводит к ненужным изменениям в репозитории.
|
|||
|
|
2. Конфликты при слиянии веток. Различия в таких файлах могут вызывать конфликты, которые не связаны с реальными изменениями, усложняя процесс работы над кодом.
|
|||
|
|
3. Усложнение кода при проверке. Изменения в автоматически сгенерированных файлах попадают в PR, затрудняя код-ревью.
|
|||
|
|
4. Недостоверность содержимого main. Нет гарантии, что в основной ветке всегда будут корректные версии сгенерированных файлов.
|
|||
|
|
|
|||
|
|
### Проблемы при добавлении сгенерированных файлов в .gitignore
|
|||
|
|
|
|||
|
|
1. Необходимость предварительной генерации. При добавлении таких файлов в .gitignore для проверки кода в пайплайне необходимо добавлять этап генерации при каждом изменении в PR.
|
|||
|
|
Это критично на крупных проектах, так как генерация файлов может занимать несколько минут.
|
|||
|
|
2. Неудобства для разработчиков. Разработчикам потребуется вручную генерировать файлы на локальной машине при каждом чекауте.
|
|||
|
|
3. Неактуальный код в main. Основная ветка без предварительно сгенерированных файлов станет неработоспособной, а сборка потребует добавления этапа генерации, что увеличит время и нагрузку на серверы.
|
|||
|
|
|
|||
|
|
### Рекомендации:
|
|||
|
|
|
|||
|
|
1. Оставлять сгенерированные файлы в репозитории.
|
|||
|
|
Это позволит сохранить работоспособность основного кода без необходимости постоянной генерации файлов на всех этапах.
|
|||
|
|
При этом рекомендуется:
|
|||
|
|
- Периодически актуализировать файлы в основных ветках;
|
|||
|
|
- Контролировать конфликты при слиянии веток и исключать ненужные изменения в этих файлах.
|
|||
|
|
2. Обучение команды. Важно информировать команду о причинах хранения сгенерированных файлов в репозитории и о правилах работы с ними.
|