Синхронизация форка ergohaven-zmk-config в GitHub

Содержание

Прошивки клавиатур постоянно дорабатываются и обновляются, и если доработки имеют общий характер и вносились в главный репозиторий ZMK, то эти обновления автоматически подтянутся при следующей сборке прошивки, например после изменения раскладки, но также периодически обновляется и репозиторий ergohaven-zmk-config, содержащий в себе раскладки и конфигурационные файлы клавиатур. Обновления могут содержать в себе, например, файлы, необходимые для сборки прошивок под новые девайсы, или же какие-то доработки в уже выпущенных устройствах, и в отличие от обновлений в ZMK, обновления в ergohaven-zmk-config автоматически не применяются, чтобы внести их в Ваш форк, необходимо провести процедуру синхронизации. О том, как провести процедуру синхронизации и будет рассказано в этом руководстве.

Приложение GitHub является сторонним софтом, каких-то деталей его функционала автор может не знать, а также какой-то функционал с течением времени может измениться. При возникновении каких-либо вопросов или проблем пишите в сообщество Ergohaven в Telegram.

Синхронизация форка

О необходимости синхронизировать форк вы можете узнать по появлению ссылки с текстом “commits behind” на вкладке Code форка, в обычных условиях при этом также должна появиться кнопка Sync fork, если ее нет, то перейдите к разделу Кнопка Sync Fork не отобразилась.

image

Для синхронизации нажмите кнопку Sync fork.

image

В появившемся окне нажмите кнопку Update branch и все, форк успешно синхронизирован, все изменения из основного репозитория уже в вашем форке.

Если после нажатия Sync fork отобразилось окно с заголовком “This branch has conflicts that must be resolved”, то есть 2 варианта синхронизации:

  1. Отбросить все внесенные Вами в форк изменения, ВНИМАНИЕ при этом раскладка в Вашем форке вернется к стандартной, так что делайте это, только если уверены, что можете без проблем восстановить все свои изменения. Для отбрасывания изменений с синхронизацией форка нажмите Discard commits.
  2. Решить конфликты слияния. Решение конфликтов описано в разделе Синхронизация с конфликтами слияния.

image

Кнопка Sync Fork не отобразилась

Чтобы начать процедуру синхронизации нажмите на ссылку с текстом “commits behind” на вкладке Code форка.

image

Откроется страница “Comparing changes”, обратите внимание на выбранные по умолчанию значения:

  • base repository - по умолчанию должно быть выбрано "{Ваш ник на GitHub}/ergohaven-zmk-config";
  • base - по умолчанию должно быть выбрано “main”;
  • head repository - по умолчанию должно быть выбрано “ergohaven/ergohaven-zmk-config”;
  • compare - по умолчанию должно быть выбрано “main”;

image

Если какие-то из значений отличаются, выберите значение, которое должно быть по-умолчанию.
Далее нажмите кнопку Create pull request.

image

Введите название пулл-реквеста, если оно не было заполнено автоматически, и нажмите кнопку Create pull request.

image

Если в нижней части пулл-реквеста отобразилось сообщение “No conflicts with base branch”, то нажмите кнопку Merge pull request и ветка успешно обновлена! Можете перейти на вкладку Actions, сборка обновленной прошивки уже запущена.

image

Если в нижней части пулл-реквеста отобразилось сообщение “This branch has conflicts that must be resolved”, то закройте созданный пулл-реквест нажатием Close pull request в нижней части страницы и перейдите к разделу Синхронизация с конфликтами слияния.

image

Синхронизация с конфликтами слияния

Если в основном репозитории были внесены изменения в файлы, которые Вы также изменяли в своем форке, например файлы .keymap, в которых хранятся раскладки клавиатур, то при обновлении форка могут возникнуть конфликты слияния, далее описаны шаги для их решения.

  1. На вкладке Code нажмите кнопку Branches.

image

  1. Нажмите New branch.

image

  1. В появившемся окне введите название ветки, например “sync”, затем в выпадающем списке выберите репозиторий “ergohaven/ergohaven-zmk-config”, по умолчанию должна быть выбрана ветка “main”, и нажмите Create new branch.

image

  1. Далее в строке созданной ветки нажмите ••• и в открывшемся выпадающем списке выберите New pull request.

image

  1. Нажмите на base repository и выберите в выпадающем списке форк "{Ваш ник на GitHub}/ergohaven-zmk-config".

image

  1. На открывшейся странице “Comparing changes” нажмите кнопку Create pull request.

image

  1. В зависимости от количества синхронизируемых коммитов кнопка Resolve conflicts может быть не видна сразу, пролистайте до нее и нажмите.

image

  1. Откроется инструмент для разрешения конфликтов, в левой части страницы отображена панель с списком файлов, конфликты в которых надо разрешить, а в правой части содержимое файлов с отмеченными местами конфликтов.

image

  1. Между <<<<<<< sync (“sync” в данном примере это название созданной ветки) и ======= находятся изменения из основного репозитория “ergohaven/ergohaven-zmk-config”, вызвавшие конфликт. Между ======= и >>>>>>> main находятся изменения, внесенные Вами в раскладку.
    Далее необходимо внимательно рассмотреть каждый конфликт и решить, хотите ли вы внести в свою раскладку изменения, предложенные из “ergohaven/ergohaven-zmk-config”.
  • Если Вы понимаете, что изменение из основного репозитория Вам не нужно, то удалите строки, начиная с <<<<<<< sync и заканчивая =======, затем пролистайте файл до строки >>>>>>> main, означающей окончание данного конфликта, и также сотрите эту строку. Конфликт разрешен.


  • Если Вы понимаете, что изменение из основного репозитория Вам нужно, то удалите строку <<<<<<< sync, строку ======= и строку >>>>>>> main, тем самым добавляя изменение из основного репозитория к раскладке. Конфликт разрешен.


  • Если Вы не понимаете, или не уверены, что делает какое-то изменение из основного репозитория, то обратитесь за помощью с разрешением конфликта в Сообщество Ergohaven в Telegram.
  1. После разрешения всех конфликтов в файле станет доступна кнопка Mark as resolved, нажмите ее чтобы завершить разрешение конфликтов в файле.
  2. После разрешения конфликтов во всех файлах отобразится кнопка Commit merge, нажмите ее для завершения.

image

  1. Пролистайте страницу до кнопки Merge pull request, нажмите ее, и затем нажмите Confirm merge.

  2. Последним шагом для того, чтобы удостовериться, что все конфликты разрешены перейдите на вкладку Actions, дождитесь завершения сборки прошивки. Если конфликты разрешены корректно, то сборка прошивки успешно завершится.