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