> For the complete documentation index, see [llms.txt](https://prostokosaka.gitbook.io/bubble/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://prostokosaka.gitbook.io/bubble/138-integratsiya-s-github.md).

# 13.8 Интеграция с GitHub

Bubble можно интегрировать с GitHub, благодаря чему вы можете хранить версию плагина в репозитории и получить все плюсы от их системы контроля версий. Обратите внимание, что основная версия хранится на серверах Bubble , а в GitHub копия плагина. Если вы изменяете код в Git (см ниже), вы сможете подгрузить последние правки в хранилище Bubble .

## Соединение с GitHub

Первым шагом нужно связать аккаунты Bubble и GitHub. Если вы регистрировались с помощью GitHub, то уже все настроено, но в остальных случаях вы можете связать аккаунты на странице Профиля (Account (!!!ЛНК!!!)) или на странице "Мои плагины"/"My plugins" (!!!ЛНК!!!).![](https://manual.bubble.is/assets/Desktop%202017-04-11%20at%2011.37.44%20AM.png)После этого вы сможете воспользоваться разделом GitHub во вкладке Версии (Versions) Редактора плагинов.![](https://manual.bubble.is/assets/Desktop%202017-04-11%20at%2011.39.05%20AM.png)

## Синхронизация с GitHub

### Первая синхронизация

В первый раз, когда вы нажимаете на кнопку "Synchronize with GitHub"/"Синхронизировать с GitHub", в вашей учетной записи GitHub создается новый репозиторий. Bubble сгенерирует имя репозитория на основе имени вашего плагина, которое было объявлено во вкладке General/Основные. По умолчанию, Bubble попытается создать закрытый репозиторий. Если вы не используете платный тариф GitHub, эта операция не удастся, а если вы создаете плагин со свободной лицензией, вы сможете создать открытый репозиторий под лицензией MIT.

Обратите внимание, что при удалении репозитория из GitHub, соедиенение будет прервано и следующая синхронизация пройдет в качестве первой. Будет создан новый репозиторий.

### Последующие синхронизации

После установки соединения вы сможете регулярно синхронизироваться с GitHub. Во время этого может произойти несколько ситуаций:

1. Версия в хранилище Bubble (та, что в редакторе) выше текущей версии. Это означает, что вы изменяли плагин в Bubble с момента последней синхронизации, и ничего не объявили непосредственно в GitHub. Более новая версия будет скопирована в Git с автоматическим сообщением о записи изменений.&#x20;
2. Вы изменили плагин в GitHub (например, получили запрос на проверку изменений и т.д.) и не изменили версию в Bubble. Новая версия будет загружена с GitHub и вы сможете изменять её.
3. Обе версии (в Bubble и GitHub) были изменены, с внесением записей об изменении в GitHub, и эти две версии совместимы. Тогда во время синхронизации произойдет слияние версий GitHub и Bubble, и выпустится новая версия.
4. Обе версии изменены, но в них есть конфликты. Версия в Bubble не будет изменена, а в репозиторий будет оправлен запрос на проверку. Затем вы можете работать над слиянием версий, исправлять конфликты, получать изменения в основную ветку. После этого синхронизация загрузит в Bubble версию без конфликтов.

## Копирование плагинов

Одно из ключевых преимуществ интеграции с GitHub в том, что вы можете копировать готовые плагины с открытым исходным кодом, если их автор тоже использует GitHub. В таком случае появится кнопка для копирования плагина в ваш аккаунт. Это действие скопирует плагин, создаст ответвление в репозитории и синхронизирует новый плагин с новым репозиторием. Теперь вы можете работать над плагином как обычно и использовать встроенные в GitHub функции ветвления при работе вместе с автором над оригинальной версией плагина.

## Структура папок и кода

При синхронизации с репозиторием, все данные синхронизируются в структурированном виде. Когда вы изменяете плагин на GitHub (или в другом редакторе кода, или производите слияние с чьими-то правками), рекомендуется придерживаться той же структуры. Ниже перечислены несколько ключевых вещей о том, как структурирован код и данные.![](https://manual.bubble.is/assets/Desktop%202017-04-11%20at%202.19.16%20PM.png)

### Форматы файлов

Данные и код представлены в виде JSON файлов, JavaScript файлов или HTML файлов. Вставляемые в страницы HTML заголовки будут HTML файлами,код различных элементов и действий будет на JavaScript. Всё остальное будет представлено в виде JSON файлов, который можно менять с помощью интерфейса Bubble. Будьте осторожны при внесении изменений в JSON файлы, т.к. некоторые изменения могут сделать файлы непригодными для чтения через Bubble.

### Структура папок

Папки должны соответствовать архитектуре редактора Bubble. То, что вы можете найти во вкладке Shared Tech находится на корневом уровне, а вызовы API, Элементы и Действия находятся в трех отдельных папках. Объявления API в своем большинстве находятся в JSON файлах, в то время как элементы и действия разделены по подпапкам.

### ID

Во время навигации по папкам вы можете заметить некоторые ключи, которые хранятся в JSON файлах и являются уникальными ID (например, "AED"). Они применяются к элементам, параметрам API и т.д. Пожалуйста, не изменяйте эти записи, так как они используются в пользовательских приложениях для представления различных записей (но вы можете изменять подписи и т.д.)

### Персональные и учетные данные

При тестировании плагина, в частности API, вы используете некоторые учетные данные для тестирования. Эти данные не синхронизируются с GitHub.
