Я форкнул репозиторий Discourse на GitHub. Как заменить его на существующую установку Discourse на моём сайте?

Я сделал форк репозитория Discourse на GitHub. Как мне заменить его на уже установленную версию Discourse на моём сайте? Я перепробовал всё, но каждый раз сталкивался с ошибками. Я добавил свой репозиторий Discourse из GitHub в файл app.yml, но не смог продолжить из-за ошибок. Даже когда мне удавалось внести изменения, система всё равно переустанавливала оригинальный Discourse. Как правильно выполнить этот процесс?

Будьте конкретнее, это поможет.

После повторного анализа я внес изменения в анализируемый мной Discourse и заметил, что это изменение отображается на странице обновлений в панели администратора. Сейчас я обновляю его; если корректировка сработает корректно, я соответственно обновлю это сообщение.

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

run:
  - exec: echo "Beginning of custom commands"
  ## Если вы хотите установить адрес электронной почты «От» для первой регистрации, раскомментируйте и измените:
  ## После получения первого письма о регистрации закомментируйте строку обратно. Она должна выполниться только один раз.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec:
     cd: /var/www/discourse
     cmd:
         - sudo -u discourse git remote set-url origin https://github.com/KilicSelcuk/discourse.git
         - sudo -u discourse git fetch origin
         - sudo -u discourse git checkout origin/main
         - sudo -u discourse git remote set-branches --add origin main
         - sudo -u discourse git remote set-branches origin tests-passed
         - sudo -u discourse git reset --hard origin/main
  - exec: echo "End of custom commands"

Итак, когда вы открываете исходный код и смотрите примерно на 6-ю строку, соответствует ли хэш коммита в строке версии последнему коммиту в вашем форке?

Я думал, что завершил задачу, но, похоже, это не сработало. Последнее обновление, видимое на странице обновлений администратора: https://github.com/KilicSelcuk/discourse/commit/e44347414a8325ec25e5892c35bcd889d39a6668.

Однако фактические изменения, которые я внес, отражены здесь: Commits · KilicSelcuk/discourse · GitHub.

По сути, изменения, которые я внедрил, не отображаются на странице обновлений. Кроме того, при выполнении пересборки обновления моего репозитория не применяются. Если бы изменения были применены, они были бы видны.

Моя последняя конфигурация выглядит следующим образом:

## Любые пользовательские команды для запуска после сборки
run:
  - exec: echo "Начало пользовательских команд"
  ## Чтобы установить адрес электронной почты «От» для вашей первоначальной регистрации, раскомментируйте и измените:
  ## После получения первого письма о регистрации закомментируйте строку обратно. Это нужно сделать только один раз.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec:
     cd: /var/www/discourse
     cmd:
         - sudo -u discourse git remote set-url origin https://github.com/KilicSelcuk/discourse.git
         - sudo -u discourse git fetch origin
         - sudo -u discourse git checkout origin/main
         - sudo -u discourse git remote set-branches --add origin main
#         - sudo -u discourse git remote set-branches origin tests-passed
#         - sudo -u discourse git branch -u origin/main
         - sudo -u discourse git reset --hard origin/main

Решение этой проблемы было бы полезным. Я не смог найти полезный ресурс на форуме, но это может служить ориентиром для тех, кто последует за мной.

Это обычно плохая идея. Внесите изменения в плагин.

Действительно, изначально я делал именно это, но после интеграции плагина в ядро я больше не могу его изменять. К сожалению, предложенные решения также оказались неэффективными: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24

Если вы форкнули плагин, то вам следует удалить включённый плагин и клонировать вашу версию.

Кажется, я уже говорил об этом в другой теме. Вам определённо стоит форкнуть только плагин, а не всё приложение и все остальные плагины.

При попытке установить плагин у меня возникает ошибка. Если у меня будет больше времени, я попробую снова: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24

Вот как решить вашу проблему. Если у вас возникла ошибка и вы хотите получить помощь, обязательно точно опишите, в чём заключается ошибка, приложите секцию plugins из вашего YAML-файла и ссылку на форк вашего плагина.

К сожалению, я прилагаю все усилия, чтобы решить проблему; я также указал ошибку в этом вопросе, но пока не нашел решения. Overriding user_guardian.rb in a plugin (no fork necessary!) - #24

Я настраиваю эту конфигурацию; не считаете ли вы, что я допускаю ошибку? Обновления Discourse указывают на наличие изменений, но отображается версия из моего локального репозитория, а не из репозитория Discourse. Я обновляю систему, но ничего не меняется — обновление всё ещё отображается. (Полагаю, что моя модификация распознаётся, но при обновлении подтягиваются данные из основного репозитория):

## Любые пользовательские команды для выполнения после сборки
run:
  - exec: echo "Начало пользовательских команд"
  ## Если вы хотите установить адрес электронной почты в поле 'From' для первой регистрации, раскомментируйте и измените:
  ## После получения первого письма с регистрацией снова закомментируйте эту строку. Она должна выполниться только один раз.
  #- exec: rails r "SiteSetting.notification_email='info@unconfigured.discourse.org'"
  - exec:
     cd: /var/www/discourse
     cmd:
         - sudo -u discourse git remote set-url origin https://github.com/KilicSelcuk/discourse.git
         - sudo -u discourse git fetch --tags --prune-tags --prune --force origin
         - sudo -u discourse git checkout origin/main
         - sudo -u discourse git remote set-branches --add origin main
         - sudo -u discourse git remote set-branches origin tests-passed
#         - sudo -u discourse git branch -u origin
         - sudo -u discourse git reset --hard origin/main
  - exec: echo "Конец пользовательских команд"

Да. Я уже говорил, как включить только ваш форк-плагин, но вы этого не делаете.

Действительно, я предпринял эту попытку: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24. Как вы и предлагали, я опробовал оба метода. Первый способ привел к ошибке, о которой сообщается здесь: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24.

Второй метод сделал сайт недоступным. Я ищу альтернативные решения в надежде найти выход, но прогресс пока незначителен, поэтому я рассматриваю другие варианты.

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

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

спасибо

Сделайте так, как советует @pfaffman.

Я поступаю именно так (удаляю оригинальный плагин из app.yml, клонирую ваш) с клиентами, и это лучший способ.

Особенно если вы менее опытный разработчик, вы столкнетесь с проблемами, форкая основной репозиторий. Следить за темпами развития основного репозитория будет неинтересно.

Это работа на полный рабочий день. Люди, которые занимались этим много лет назад, до сих пор сожалеют, хотя тогда всё двигалось гораздо медленнее.

Я уже делаю это, но всё равно возникает ошибка. Я ценю вашу попытку помочь, но я уже упоминал об этом два или три раза ранее :confused:

Вы правы, но как мне сохранить обновления, внесённые в основной плагин, внутри моего собственного плагина? Неужели мне нужно скопировать файлы основного плагина и загрузить их в свой репозиторий? Или есть способ автоматизировать этот процесс?

спасибо

Вы не написали, что пошло не так, когда вы пробовали только форкнутый плагин.

Точно так же, как и до того, как он стал основным плагином.

Также, что именно вы меняете? Возможно, вы сможете перенести только эти изменения в свой собственный плагин.

Я попытался снова и добавил детали возникшей ошибки (почти все из них). Не могли бы вы ознакомиться с этим: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24

@kuaza Я пометил эту тему тегом unsupported-install и закрою её. Пожалуйста, следуйте официальным инструкциям по установке, если хотите получить помощь здесь в будущем. Удачи!

Выше есть несколько ценных советов от @pfaffman и @merefield, которые, надеюсь, помогут вам разобраться, как работать с Discourse.