GitHub에서 Discourse 저장소를 포크했습니다. 내 사이트의 기존 Discourse 설치로 교체하려면 어떻게 해야 하나요?

GitHub에서 Discourse 저장소를 포크했습니다. 내 사이트에 설치된 기존 Discourse를 이 포크된 저장소로 교체하는 방법은 무엇인가요? 여러 가지를 시도해 보았지만 매번 오류가 발생했습니다. app.yml 파일에 GitHub의 내 Discourse 저장소를 추가해 보았지만, 오류로 인해 진행할 수 없었습니다. 변경 사항을 적용하는 데 성공하더라도 항상 원래의 Discourse가 다시 설치됩니다. 이 과정을 올바르게 수행하는 방법은 무엇일까요?

구체적으로 설명하는 것이 도움이 됩니다.

다시 확인한 결과, 분석 중이던 디스커스에 수정 사항을 적용했고, 이 변경 사항이 관리자 패널의 업데이트 페이지에 표시되는 것을 확인했습니다. 이제 업데이트를 진행할 예정이며, 조정 사항이 정상적으로 작동하면 이 메시지를 그에 맞게 수정하겠습니다.

이 내용은 제 app.yml 파일의 설정입니다. 오류 없이 재빌드했지만, 이후 검토 시 제가 만든 수정 사항이 표시되지 않습니다. 다만, 디스커스는 여전히 완벽하게 작동하고 있습니다.

run:
  - exec: echo "Beginning of custom commands"
  ## If you want to set the 'From' email address for your first registration, uncomment and change:
  ## After getting the first signup email, re-comment the line. It only needs to run once.
  #- 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.

결국 제가 구현한 변경 사항이 업데이트 페이지에 표시되지 않습니다. 또한 재빌드(rebuild)를 수행해도 제 저장소의 업데이트가 반영되지 않습니다. 변경 사항이 적용되었다면 그 내용이 보였어야 합니다.

제 최신 설정은 다음과 같습니다:

## 빌드 실행 후 실행할 사용자 정의 명령
run:
  - exec: echo "Beginning of custom commands"
  ## 초기 가입 시 '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 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!) - #23 by Jonathan5

플러그인을 포크했다면, 포함된 플러그인을 삭제하고 자신의 버전을 클론해야 합니다.

다른 주제에서 이 내용을 이미 말씀드린 것 같습니다. 전체 앱과 다른 모든 플러그인이 아닌, 플러그인만 포크하는 것이 반드시 필요합니다.

플러그인을 설치하려고 하면 항상 오류가 발생합니다. 시간이 더 나면 다시 시도해 보겠습니다: Overriding user_guardian.rb in a plugin (no fork necessary!) - #23 by Jonathan5

문제를 해결하는 방법은 다음과 같습니다. 오류가 발생했고 도움이 필요하시다면, 정확한 오류 내용을 명시하고 yml 파일의 플러그인 섹션을 포함하며, 포크한 플러그인에 대한 링크를 제공해야 합니다.

안타깝게도, 나는 이 문제를 해결하기 위해 열심히 노력하고 있습니다. 이 문제에 대한 책임도 함께 나누고 있지만, 아직까지 해결책을 찾지 못했습니다. Overriding user_guardian.rb in a plugin (no fork necessary!) - #23 by Jonathan5

이 구성을 작성 중인데, 실수를 하고 있는 건지 생각됩니다. Discourse 업데이트에서 변경 사항이 있다는 표시가 뜨지만, Discourse의 것이 아니라 로컬 저장소의 버전이 표시됩니다. 업데이트를 진행해도 아무것도 바뀌지 않고, 업데이트 알림이 계속 나타납니다. (제 수정 사항을 인식하는 것 같지만, 업데이트 시 메인 저장소에서 가져오는 것 같습니다):

## 빌드 후 실행할 사용자 정의 명령어
run:
  - exec: echo "Beginning of custom commands"
  ## 첫 번째 가입 시 '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 "End of custom commands"

네. 포크한 플러그인만 포함하는 방법을 알려줬는데, 그렇게 하고 있지 않군요.

실제로 저는 이 작업을 수행했습니다: Overriding user_guardian.rb in a plugin (no fork necessary!) - #23 by Jonathan5. 말씀하신 대로 두 가지 방법 모두 시도해 보았습니다. 첫 번째 방법은 아래에 기록된 바와 같이 오류를 발생시켰습니다: Overriding user_guardian.rb in a plugin (no fork necessary!) - #23 by Jonathan5.

두 번째 방법은 사이트 접속이 불가능하게 만들었습니다. 해결책을 찾기 위해 대안을 모색하고 있지만, 진전이 미미하여 다른 경로를 고려하게 되었습니다.

대규모 수정을 원하지 않으므로 Discourse 포크를 고려해 보았습니다. 매번 메인 저장소의 최신 변경 사항을 포크에 업데이트한 후, 제가 만든 수정 사항만 다시 적용하는 방식으로 받아들이는 것입니다.

제 주요 과제는 효과적이고 올바른 해결책을 찾는 것입니다. 코드를 삭제하고 새로 작성하며 새로운 접근법을 시도하는 것에는 기꺼이 응할 것입니다. 그러나 불확실한 오류 앞에서 결국 결정적인 해결책을 도출하지 못해 안타깝습니다.

감사합니다

@pfaffman의 조언을 따르세요.

저도 클라이언트에게 이 방법(앱.yml에서 원래 플러그인을 삭제하고, 자신의 플러그인을 클론하는 것)을 사용하며, 이것이 가장 좋은 방법이라고 생각합니다.

특히 경험이 적은 개발자라면 메인 저장소를 포크하는 것이 문제의 원인이 될 수 있습니다. 메인 저장소의 빠른 업데이트 속도를 따라가는 것은 결코 쉬운 일이 아니니까요.

그건 전문적인 일이다. 몇 년 전 그렇게 하던 사람들은 아직도 후회하고 있고, 그때는 지금보다 훨씬 느리게 진행되었다.

이미 그렇게 하고 있는데도 여전히 오류가 발생합니다. 도움을 주시려는 점은 감사하지만, 이 문제는 이미 두세 번 언급한 바 있습니다 :confused:

맞는 말씀이시지만, 제 플러그인 내에서 코어 플러그인에 대한 업데이트를 어떻게 유지할 수 있을까요? 코어 파일을 복사해서 제 저장소에 업로드해야 하나요? 아니면 이 과정을 자동화할 방법이 있을까요?

감사합니다

포크된 플러그인만 사용했을 때 어떤 문제가 발생했는지 공유하지 않으셨네요.

핵심 플러그인이 되기 전과 완전히 같은 방식으로 하면 됩니다.

또한, 무엇을 변경하고 계신가요? 아마도 그 변경 사항만 제 플러그인으로 옮길 수 있을지도 모릅니다.

다시 시도했고, 이번에는 발생한 오류의 세부 사항(거의 대부분)을 포함했습니다. 검토해 주시겠습니까: Overriding user_guardian.rb in a plugin (no fork necessary!) - #23 by Jonathan5

@kuaza 이 주제를 unsupported-install 태그를 붙이고 닫겠습니다. 앞으로 여기서 도움을 받으시려면 공식 설치 지침을 따르시기 바랍니다. 행운을 빕니다!

위에서 @pfaffman님과 @merefield님이 남기신 몇 가지 조언이 Discourse를 어떻게 다루어야 하는지 이해하는 데 도움이 되기를 바랍니다.