Verbesserungen im Source Code in GitHub einbringen

Hallo zusammen,

seit letztem Jahr wird bei mir die Kapitalertragsteuer und der Solidaritätszuschlag aus Dividendengutschriften und Ertragsgutschriften der Consorsbank nicht mehr ausgelesen.

Letzte Woche habe ich mir nun Ecplise installiert, das Projekt runtergeladen, angeschaut und ein wenig debuggt. Dadurch konnte ich den Fehler finden und beheben. Außerdem habe ich die Testdatei um einen Fall erweitert und eine neue Beispieldatei erstellt. Jetzt kam mir die Frage, wie es weitergeht, also habe ich einen GitHub Account erstellt und mich hier angemeldet.

Weil ich bisher nicht mit GitHub gearbeitet habe (in grauer Vorzeit mal mit CVS), stellt sich mir die Frage, wie ich die Änderungen einbringen kann. Gibt es einen Artikel dazu oder kann es mir jemand kurz schildern?

Vielen Dank
Sven

Hallo Sven,

für den Part wie Änderung aka commits bzw pull requests und dem ansteuern einzelner Entwicklungen aka Branchen unterstützen Programme wie bspw der Github Desktop oder SourceTree.

Darüber hinaus gibt es zahlreiche Tutorials wie bspw https://kbroman.org/github_tutorial/pages/fork.html die den Master synchron halten. Man sollte nur eigene Entwicklungen in einer eigenen Branch schreiben und nicht im Master.

Gruß
Marco

1 Like

Hallo Marco,

vielen Dank für Deine Antwort. Leider stehe ich auch nach dem Lesen diverser Dokus noch etwas auf dem Schlauch.

Wenn ich es richtig verstehe, bedeutet Deine Antwort, dass es nicht möglich ist, direkt aus Eclipse heraus einen Commit oder Pull Request abzusetzen und man benötigt z.B. den GitHub Desktop? Den habe ich jetzt installiert und mich eingeloggt.

Ist das Vorgehen dann so?

  • das Projekt über den GitHub Desktop herunterzuladen
  • einen Branch zu erstellen
  • den Branch mittels „Publish branch“ zu veröffentlichen
  • das heruntergeladene Projekt in Eclipse zu importieren

Wenn ich das so richtig verstanden habe, wäre eine kurze Antwort nett, damit ich nicht eventuell in die falsche Richtung renne.

Ich dokumentiere den weiteren Verlauf gerne weiter in diesem Thread. Vielleicht interessiert es ja auch andere Newbees.

Vielen Dank,
Sven

P.S.: Irgendwie hatte ich gehofft alles in Eclipse machen zu können, weil auf der Startseite des Projektes das direkte Herunterladen ins Eclipse genannt ist.

Hallo Sven,

dein Verständnis der Reihenfolge ist grundsätzlich ok, mache ich auch so.

However dein Hinweis bzgl. GitHub und Eclipse hat via Google folgendes Tutorial gefunden:
https://www.vogella.com/tutorials/EclipseGit/article.html

Das clonen des eigenen Repositories klappt anscheinend sehr gut, so das mE fast alles via Eclipse gesteuert werden kann. Dann wäre nur noch via der GitHub online Repository der Pull von deinem Fork auf den geklonten von PP notwendig. Nix weitere Software und Co.

Vielleicht hilft dir das weiter?

Was ich noch nicht herausgefunden habe, wie ich via Eclipse das remote Repository von PP mit meinem synchronisieren kann. Basierend auf https://kbroman.org/github_tutorial/pages/fork.html verwende ich folgende Befehle in meiner zuvor offline erstellten Kopie:

  • git remote add buchen https://github.com/buchen/portfolio.git
  • git pull buchen master
  • git push

Gruß
Marco

Hallo Marco,

vielen Dank für die Hinweise. Den Artikel von Lars Vogel hatte ich auch gefunden und im Browser noch offen. Vielleicht nicht weit genug gelesen, wie ich gerade festgestellt habe. Das schaue ich mir mal genauer an.

Insgesamt hatte ich da noch einen Schritt übersehen, und zwar, dass man einen Fork machen muss und mit dem eigenen Repository arbeitet. Nachdem ich den Fork erstellt und mit dem GitHub Desktop geclont habe, konnte ich die angepassten Dateien hochladen, den Pull Request erstellen und so den Fix einbringen. Das Thema ist also erledigt.

Als Nächstes werde ich versuchen das über Eclipse direkt zu machen und melde mich wieder, sobald ich mehr verstanden habe.

Danke und Grüße
Sven

Change is drin. Vielen Dank! :clap: Ich denke bis Ende des Monats gibt es eine neue Version.

Weil ich etwas gebraucht habe, um den Einstieg zu finden, hier zusammengefasst noch mal die Schritte, um ein Eclipse aufzusetzen und das Projekt zu laden. Vielleicht hilft es anderen dabei, es auch zu versuchen:

  1. GitHub User nutzen oder erstellen
  2. Fork des buchen/portfolio
    grafik
  3. Eclipse installieren (siehe auch auf der Startseite des Projektes unten GitHub - buchen/portfolio: A simple tool to calculate the overall performance of an investment portfolio.)
  4. Fork in Eclipse importieren (Clone a Git Repository)
  5. Portfolio-target-definition.target doppelklicken → Set as Active Target Platform (kann etwas dauern, bis es fertig ist)
    grafik
  6. Run… → Run configurations → links Portfolio Performance wählen, dann Tab Plug-ins → Add Required Plug-ins → Apply
    grafik
    grafik
  7. lokalen Branch erstellen und entwickeln
    grafik
  8. Entwicklungen committen – bis dahin lokal
  9. Branch nach remote pushen
    grafik
    grafik
  10. Pull Request erstellen (auf der GitHub Webseite)
11 Likes

Gerne möchte ich noch einen Antwort an Marco (@Ragas) geben zum Thema, wie man aus Eclipse heraus das Remote Repository von PP mit dem eigenen synchronisieren kann.

Hier die entsprechenden Schritte, wobei der erste Schritt nur einmalig durchgeführt werden muss. Außerdem kann es dazu kommen, dass die Anzeige in Eclipse nicht sauber aktualisiert/refreshed wird, obwohl beispielsweise das Update des Upstream Master funktioniert hat. Dann einfach die nachfolgenden Schritte durchführen und die Aktualisierung der Anzeige kommt im Anschluss oder Refresh (F5) nach jedem Schritt drücken.

Also hier das Vorgehen:

1. Schritt: Upstream bei Remotes hinzufügen

Dieser Schritt muss nur vorbereitend beim ersten Mal durchgeführt werden. Bei allen weitern Updates kann man mit Schritt 2 beginnen.

In der Git Perspektive mit der rechten Maustaste auf Remotes → Create Remote…
grafik

Dann neues Remote erstellen mit name: upstream, Configure fetch

grafik

Im nächsten Screen auf „Change…“

grafik

Anschließend die Repository URI GitHub - buchen/portfolio: A simple tool to calculate the overall performance of an investment portfolio. eingeben und „Save and Fetch“ drücken.

grafik

Nach dem ersten Aufsetzen, hier beginnen:

2. Schritt: Aktualisieren des Buchen Master

Unter „Remotes“ → „upstream“ → „Fetch“ auswählen

grafik

Als Ergebnis erscheint ein Fenster mit den abgeholten Änderungen. Zum Beispiel:

grafik

Anschließend File → Refresh oder F5 drücken.

3. Schritt: Rebase des Master des eigenen Forks auf die aktuelle Version des Buchen Master

Als erstes den Master Branch des Fork auschecken, wenn nicht schon geschehen. Dann das Rebase durchführen:

grafik

Und im nächsten Dialog den Upstream Master auswählen:

grafik

Und final das Pushen des „Rebased“ Branch in den Fork bei GitHub:

grafik

grafik

grafik

Ergebnis:

grafik

Anschließend File → Refresh oder F5 drücken.

Fertig!

Es wäre toll, wenn es jemand ausprobieren und Feedback geben könnte, sollte etwas nicht ganz passen.

3 Likes

Ich habe jetzt gerade Deine Anleitung befolgt und ich glaube, dass es geklappt hat. Ich musste einfach noch mein Remote origin zuerst löschen, da ich ein Clone ursprünglich gemacht hatte. Dann noch die Fork erzeugen auf GitHub und die dann als origin setzen in Eclipse. Danach konnte ich alle Deine Schritte befolgen.
Vielen Dank für Deine Anleitung!

Könnte das nicht einer von euch übernehmen, indem ich die Files hier hochlade?

Da ich leider kein ja machen wir gelesen habe, habe ich mich mit Github beschäftigt. Ich konnte das Projekt jetzt auch mit eclipse und dem EGit Plugin mit Github verknüpfen.

Leider kann ich das Programm selber nicht ausführen, indem ich folgendes durchführe:
Run the application and the tests with the launch configurations stored in ~/portfolio-app/eclipse folder (right-click „Run As“)
Hier bekomme ich eine Fehlermeldung:

!SESSION 2020-11-03 17:14:05.264 -----------------------------------------------
eclipse.buildId=unknown
java.version=14.0.2
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments:  -product name.abuchen.portfolio.bootstrap.product
Command-line arguments:  -product name.abuchen.portfolio.bootstrap.product -data C:\Users\abc\git/../runtime-name.abuchen.portfolio.product -dev file:C:/Users/abc/git/.metadata/.plugins/org.eclipse.pde.core/Portfolio Performance/dev.properties -os win32 -ws win32 -arch x86_64 -consoleLog

!ENTRY org.eclipse.osgi 4 0 2020-11-03 17:14:08.013
!MESSAGE Application error
!STACK 1
java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Display
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:148)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:657)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1447)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1420)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Display cannot be found by org.eclipse.e4.ui.workbench.swt_0.14.1000.v20200514-1625
	at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:516)
	at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:171)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 14 more

Den Test vom PDF-Import kann ich jedoch ohne Fehler ausführen. Kann mir hier bitte jemand weiterhelfen.

Versuche mal, unter Run --> Run Configurations… --> Portfolio Performance Java 11 auszuwählen und dann den Tab „Plug-ins“ auszuwählen. Dort rechts den Button „Add Required Plug-ins“ drücken und anschließend „Apply“ und/oder „Run“.

Vielleicht hilft auch dieser Beitrag: Verbesserungen im Source Code in GitHub einbringen

1 Like

Vielen dank, jetzt wo ich es lese wird mir klar, dass ich es das Letzte mal auch so gemacht hatte. Keine Ahnung mehr woher ich wusste, dass ich darauf klicken muss.

Ich gucke mir das später mal an und versuche die Änderungen mit deiner Anleitung hochzuladen.

Ich hänge schon wieder fest :frowning_face:

Ich habe das Rebase ausgeführt, das scheint auch noch geklappt zu haben, da ich keine Fehlermeldung bekommen habe.
Das pushen klappt aber nicht mehr.

Was muss ich da als Remote destination eintragen?
Bei mir war folgendes als default eingetragen, und dies habe ich auch nicht geändert.
grafik

Wenn ich dann weiter mache bekomme ich folgende Fehlermeldung:
grafik

Was habe ich noch falsch gemacht.
Vielen Dank im Voraus.

Du musst dein eigenes Repo verwenden und dann von diesem auf das von PP.

Wie erstelle ich das? Wo in der Anleitung muss ich einen Extra Schritt einbauen?

@inv-trad hat dies im Beitrag 7 sehr gut erklärt. Du clonst dir via GitHub das Repository von PP und verwendest dannin Eclipse deine URLs.

So ich habe jetzt die Änderungen bei mir in Github erstellt. Wie kommen die jetzt in den Code von Andreas. Oder passiert das automatisch?
Hier der Link auf meine Github-Seite:

Das passiert nicht automatisch. In meinem Beitrag vom 20. Februar steht unter 7., dass die Entwicklung in einem lokalen Branch gemacht werden sollte. Wenn man dann die Entwicklungen committed und diesen Branch gepushed hat, kann man auf der GitHub Seite den Pull Request stellen.

Oje ist das alles kompliziert.
Ich habe jetzt auf github ebenfalls ein pull request erstellt. Könnt ihr bitte prüfen, ob das jetzt passt, oder ob ich nochwas vergessen habe.