Этот документ предназначен для разработчиков, которые ранее создали форк Blockly и хотят обновить его до последней версии без исправления библиотеки. Хотя это кажется сложной задачей, есть несколько шагов, которые вы можете предпринять, чтобы сделать этот процесс более управляемым.
Понимание разветвления
Использование основной ветки Blockly означает, что вы используете недавно выпущенную версию Blockly, и все ваши настройки используют общедоступные API-интерфейсы Blockly без патчей для обезьян. Разветвление — это работа, которую вам необходимо выполнить для реализации пользовательских функций вашего форка с помощью основных API.
Простые случаи разветвления
Ниже приведены две распространенные причины, по которым вы могли выполнить форк, и решения, как вернуться к основной ветке:
- Вы создали свои собственные блоки и генераторы, не изменяя какой-либо код Blockly . Чтобы выполнить разветвление в этой ситуации, вы можете просто переместить свои собственные блоки и генераторы из репозитория Blockly в код своего собственного приложения. После этого вы сможете обновить свою версию Blockly.
- Вы добавили пользовательские функции в пространство имен Blockly, не меняя какой-либо код Blockly : например, вы добавили пользовательские поля или вспомогательные методы, используемые только вашим собственным приложением. Чтобы выполнить разветвление в этой ситуации, переместите этот пользовательский код в свое приложение за пределами репозитория Blockly. После этого вы сможете обновить свою версию Blockly.
Обширный кейс по разветвлению
Определить раздвоенную функциональность
Последняя причина, по которой мы видим форк пользователей, — это патч Blockly для создания пользовательских функций, которые, по их мнению, на данный момент не включены в исходную версию. Если ваша вилка значительно устарела, возможно, мы уже добавили необходимую вам функциональность либо в виде плагинов, либо в ядре. Знание того, какие функции вы добавили в свой форк, может дать представление о том, какие функции вам необходимо обновить.
Понимание архитектуры
Как только вы поймете функции, использующие API-интерфейсы, специфичные для форка, подумайте:
- Есть ли способ воспроизвести каждую функцию, использующую форк, с помощью API Blockly?
- Если кажется, что вы не можете воспроизвести эту функцию с помощью API-интерфейсов Blockly, свяжитесь с нами через форум или сообщите о проблеме на Github . Затем наша команда рассмотрит возможность добавления API для вашей настройки.
Определите свой путь разветвления
Следующим шагом будет фактическое начало процесса реализации новой архитектуры на основе Blockly для функций с использованием форка. Вы можете использовать два основных подхода:
- Обновите Blockly и посмотрите, что сломалось : вы сразу увидите области вашего кода, которые необходимо обновить. Вы можете использовать это в сочетании с уже известным вам пользовательским поведением для управления своей разработкой.
- Выполните рефакторинг вашего кода, чтобы отделить ваши функции от Blockly . Для этого вам необходимо получить глубокое понимание того, какие функции являются пользовательскими для вашего форка, а какие взяты из Blockly. Как только ваш код будет полностью разделен, замените старую версию Blockly самой последней версией, а затем исправьте все оставшиеся проблемы интеграции.
Двигаться вперед
Вот несколько правил, которым вы должны следовать как разработчик Blockly в будущем:
- В общем, не следует добавлять новые классы в пространство имен Blockly. Вы можете зарегистрировать настраиваемые поля или другие регистрируемые классы, не объявляя их внутри репозитория Blockly или в пространстве имен Blockly.
- Вам не следует полагаться на инструменты сборки Blockly для компиляции собственного приложения. Мы не считаем, что наши инструменты сборки являются частью общедоступного API, поэтому мы можем вносить в них изменения, которые нарушат работу вашего приложения. Вы несете ответственность за составление вашего заявления, если захотите.
Протянуть руку помощи
Blockly всегда доступен на форуме Blockly ! Если у вас возникнут какие-либо проблемы в процессе разветвления, не стесняйтесь публиковать их здесь, и мы можем помочь.