Ich habe das Discourse-Repository auf GitHub geforkt. Wie kann ich es durch die vorhandene Discourse-Installation auf meiner Website ersetzen? Ich habe alles versucht, aber jedes Mal sind Fehler aufgetreten. Ich habe mein eigenes Discourse-Repository von GitHub in die Datei app.yml eingefügt, konnte aber aufgrund von Fehlern nicht fortfahren. Selbst als es mir gelang, die Änderungen vorzunehmen, wurde immer das ursprüngliche Discourse neu installiert. Wie können wir diesen Vorgang ordnungsgemäß durchführen?
Es ist hilfreich, spezifisch zu sein.
Bei erneuter Prüfung habe ich eine Änderung an dem Diskurs vorgenommen, den ich analysierte, und ich bemerkte, dass diese Änderung auf der Update-Seite im Admin-Panel sichtbar ist. Ich aktualisiere sie nun; wenn die Anpassung korrekt funktioniert, werde ich diese Nachricht entsprechend überarbeiten.
Dies sind die Einstellungen in meiner app.yml-Datei, die ich ohne Fehler neu kompiliert habe. Bei anschließender Überprüfung sind die von mir vorgenommenen Änderungen jedoch nicht sichtbar, obwohl Discourse weiterhin einwandfrei funktioniert.
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"
Wenn Sie also die Quelle anzeigen und sich die 6. Zeile oder so ansehen, entspricht der Commit-Hash in der Versionszeichenfolge dem neuesten Commit in Ihrem geforkten Repository?
Ich glaubte, die Aufgabe erledigt zu haben, aber sie scheint unwirksam zu sein. Das neueste Update, das auf der Admin-Update-Seite sichtbar ist, lautet: https://github.com/KilicSelcuk/discourse/commit/e44347414a8325ec25e5892c35bcd889d39a6668.
Die tatsächlichen Änderungen, die ich vorgenommen habe, spiegeln sich jedoch hier wider: Commits · KilicSelcuk/discourse · GitHub.
Im Wesentlichen sind die von mir implementierten Änderungen auf der Update-Seite nicht sichtbar. Außerdem werden bei einem erneuten Build meine Repository-Updates nicht übernommen. Wenn die Änderungen angewendet worden wären, wären sie sichtbar.
Meine aktuellste Konfiguration sieht wie folgt aus:
## Alle benutzerdefinierten Befehle, die nach dem Build ausgeführt werden sollen
run:
- exec: echo "Beginn der benutzerdefinierten Befehle"
## Um die E-Mail-Adresse des Absenders für Ihre Erstanmeldung festzulegen, kommentieren Sie die Zeile aus und ändern Sie sie:
## Nachdem Sie die erste Registrierungs-E-Mail erhalten haben, kommentieren Sie die Zeile wieder aus. Sie muss nur einmal ausgeführt werden.
#- 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
Die Lösung dieses Problems wäre von Vorteil. Ich konnte keine hilfreiche Ressource im Forum finden, aber sie könnte als Leitfaden für diejenigen dienen, die folgen.
Das ist normalerweise eine schlechte Idee. Sie sollten Änderungen in einem Plugin vornehmen.
Tatsächlich habe ich das ursprünglich so gemacht, aber nachdem das Plugin in den Kern integriert wurde, kann ich es nicht mehr ändern. Leider erwiesen sich die vorgeschlagenen Lösungen ebenfalls als unwirksam: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24
Wenn Sie ein Plugin geforkt haben, sollten Sie das enthaltene Plugin entfernen und Ihre Version klonen.
Ich glaube, ich habe Ihnen das in einem anderen Thema erzählt. Sie möchten definitiv nur das Plugin und nicht die gesamte Anwendung und alle anderen Plugins forken.
Ich stoße jedes Mal auf einen Fehler, wenn ich versuche, das Plugin zu installieren. Wenn ich mehr Zeit habe, werde ich es erneut versuchen: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24
Das ist der Weg, Ihr Problem zu lösen. Wenn Sie einen Fehler haben und Hilfe wünschen, sollten Sie genau angeben, worin der Fehler besteht, und den Plugins-Abschnitt Ihrer yml-Datei sowie einen Link zu Ihrem geforkten Plugin angeben.
Bedauerlicherweise bemühe ich mich nach Kräften, das Problem zu lösen; ich habe den Fehler in dieser Angelegenheit ebenfalls geteilt, aber noch keine Lösung gefunden. Overriding user_guardian.rb in a plugin (no fork necessary!) - #24
Ich nehme diese Konfiguration vor, denkst du, ich mache einen Fehler? Discourse-Updates zeigen eine Änderung an, aber sie zeigt die aus meinem lokalen Repository anstelle der von Discourse. Ich aktualisiere, aber es ändert sich nichts; das Update erscheint immer noch. (Ich glaube, es erkennt meine Änderungen, aber wenn ich aktualisiere, zieht es aus dem Haupt-Repository):
## Beliebige benutzerdefinierte Befehle, die nach dem Erstellen ausgeführt werden sollen
run:
- exec: echo "Beginn benutzerdefinierter Befehle"
## Wenn Sie die E-Mail-Adresse 'Von' für Ihre erste Registrierung festlegen möchten, kommentieren Sie sie aus und ändern Sie sie:
## Nachdem Sie die erste Registrierungs-E-Mail erhalten haben, kommentieren Sie die Zeile erneut aus. Sie muss nur einmal ausgeführt werden.
#- 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 "Ende benutzerdefinierter Befehle"
Ja. Ich habe dir gesagt, wie du nur dein geforktes Plugin einbinden kannst und das machst du nicht.
Tatsächlich habe ich diese Aufgabe übernommen: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24. Wie Sie vorgeschlagen haben, habe ich beide Methoden ausprobiert. Der erste Ansatz führte zu einem Fehler, wie hier dokumentiert: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24.
Die zweite Methode machte die Website unzugänglich. Ich untersuche alternative Lösungen auf der Suche nach einer Lösung, aber die Fortschritte waren begrenzt, was mich dazu veranlasste, andere Wege in Betracht zu ziehen.
Da ich keine umfangreichen Änderungen vornehmen möchte, habe ich über ein Forking von Discourse nachgedacht. Ich würde meinen Fork einfach jedes Mal mit den neuesten Änderungen aus dem Hauptrepository aktualisieren, dann nur die von mir vorgenommenen Änderungen erneut anwenden und diesen Ansatz akzeptieren.
Meine größte Herausforderung liegt darin, eine effektive und korrekte Lösung zu finden. Ich bin bereit, den Code zu löschen und neu zu schreiben und neue Ansätze auszuprobieren. Angesichts unsicherer Fehler kann ich jedoch leider keine definitive Lösung produzieren.
Danke
Tun Sie, wie @pfaffman vorschlägt.
Ich mache das mit Kunden und es ist der beste Weg.
Besonders als weniger erfahrener Entwickler geraten Sie in Schwierigkeiten, wenn Sie das Haupt-Repository forken.
Das ist ein Vollzeitjob. Leute, die das vor Jahren getan haben, bereuen es immer noch, und damals bewegten sich die Dinge viel langsamer.
Ich mache das bereits, und es kommt trotzdem zu einem Fehler. Ich schätze Ihren Versuch, mir zu helfen, aber ich habe das bereits zwei- oder dreimal erwähnt :/\n\n[quote="pfaffman, post:16, topic:380046"]\nDas ist eine Vollzeitbeschäftigung. Diejenigen, die diese Aufgabe vor Jahren übernommen haben, bereuen sie immer noch, und damals war der Fortschritt erheblich langsamer.\n[/quote]\n\nSie haben Recht, aber wie kann ich Änderungen an einem Kern-Plugin in meinem eigenen Plugin beibehalten? Sollte ich die Kerndateien nicht kopieren und in mein Repository hochladen? Oder gibt es eine Möglichkeit, diesen Prozess zu automatisieren?\n\ndanke
Sie haben nicht mitgeteilt, was schief gelaufen ist, als Sie nur das geforkte Plugin ausprobiert haben.
Ich habe es erneut versucht und diesmal die Details des aufgetretenen Fehlers (fast alle) beigefügt. Könnten Sie dies bitte überprüfen: Overriding user_guardian.rb in a plugin (no fork necessary!) - #24
@kuaza Ich habe dieses Thema mit unsupported-install markiert und werde es schließen. Bitte befolge die offiziellen Installationsanweisungen, wenn du in Zukunft hier Hilfe erhalten möchtest. Viel Erfolg!
Es gibt oben einige Perlen von @pfaffman und @merefield, die du hoffentlich nutzen wirst, um dich mit Discourse vertraut zu machen.