Versionsverwaltung mit Git

Fragen zu Programmiersprachen und Software für den Hive und die Propellerchips
joergd
Beiträge: 124
Registriert: Fr 20. Dez 2013, 20:08
Wohnort: Ronneburg

Re: Versionsverwaltung mit Git

Beitrag von joergd »

Micha hat geschrieben:Hab mich durch den Thread bis hierher durchgelesen und immer mehr den roten Faden verloren.
Das ist, glaube ich, auch die falsche Herangehensweise. Du solltest das bei Interesse wirklich praktisch ausprobieren. Dafür sind die obigen Beiträge gedacht: als Anleitung für die ersten Schritte. Zum allgemeinen Verständnis der Arbeitsweise von Git gibts im Internet genug zu lesen.
Micha hat geschrieben:Momentan bin ich mehr abgeschreckt als fasziniert (aus der Perspektive "wofür brauche ich das wirklich für mein Hobby-Projekt")
Dich zwingt ja auch niemand, das zu nutzen. Solange nur Du allein ein kleines Programm für Dich entwickelst, gibts wirklich wenig Gründe zur Nutzung einer Versionsverwaltung. Sobald Du aber möchtest, daß sich andere beteiligen, ist das ein sehr nützliches Instrument. Und ich z.B. möchte, daß andere sich beteiligen.
nubok hat geschrieben:Ich habe gesehen, dass im TriOS-Repository die Versionen durch Tags gekennzeichnet sind. Ich vermute, dass ist ein Relikt aus der Subversion-Konvertierung, da der Git-typische Weg ist, für Versionen einen Feature Branch zu erzeugen (hierdurch wird - wenn es denn nötig wird - ein Backporten von Patches stark vereinfacht).
Nein, das ist kein Relikt - ich habe nichts konvertiert sondern das Archiv der letzten Version als Grundlage genommen. Eine wirkliche neue Version gibts bisher nicht, das wäre dann R57 oder so. Die Tags sind lediglich die Markierungen, von welchem Stand ich die im TriOS-Netzwerk-Thread veröffentlichten Versionen erstellt habe. Klar - für die Erstellung der Netzwerk-Version hätte ich hier einen extra Branch erzeugen können. Damals hatte ich das aber ja wirklich nur für mich genutzt.

Abgesehen davon bin ich natürlich für Hinweise wie die von nubok sehr dankbar - ich habe ja selbst kaum Erfahrung mit Git...
Viele Grüße

Jörg
joergd
Beiträge: 124
Registriert: Fr 20. Dez 2013, 20:08
Wohnort: Ronneburg

Re: Versionsverwaltung mit Git

Beitrag von joergd »

Ich habe inzwischen mal alle Sourcen, welche in der Software für den Hive auf der Download-Seite enthalten sind, auf dem Git-Server abgelegt. Im Einzelnen sind das:
  • TriOS R56, ergänzt um Netzwerk, PlexBus, DCF77 und BlueTooth
  • Basic Version 2.1
  • Plexus Version 2.05
  • Toolbox 1
  • Toolbox 2, ergänzt um die Boing-Demo
Was noch fehlt, ist das Games-Pack. Das ist etwas komplizierter, da teilweise die Sourcen fehlen und auch kein Make-Script da ist.

Wer sich das ansehen will, kann sich alles per Git herunterladen:

Code: Alles auswählen

$ mkdir Hive
$ cd Hive
$ git clone https://dev.bitquell.de/r/HIVE/TriOS.git
$ git clone https://dev.bitquell.de/r/HIVE/Basic.git
$ git clone https://dev.bitquell.de/r/HIVE/Plexus.git
$ git clone https://dev.bitquell.de/r/HIVE/Toolbox-1.git
$ git clone https://dev.bitquell.de/r/HIVE/Toolbox-2.git
In jedem der damit angelegten Verzeichnisse liegt dann ein Make-Script (make.sh), welches das jeweilige Projekt fertig baut. Als Zielverzeichnis ist jeweils "../Bin" eingetragen (also ein Verzeichnis unter dem Ort der make.sh)).
Das Make-Script ist ein Script für die Linux-Shell "Bash", welche auf allen Linux-Rechnern installiert sein sollte. Wer unter Windows, wie im ersten Beitrag beschrieben, Git installiert hat, hat damit auch eine Bash. Damit haben wir den großen Vorteil, daß das Make-Script überall läuft (auf einem Mac sollte das auch gehen).
Zum Compilieren muß man also nur in das jeweilige Projekt-Verzeichnis wechseln und das Make-Script aufrufen. Z.B für TriOS:

Code: Alles auswählen

$ cd TriOS
$ ./make.sh
Wenn man das für alle einzelnen Projekte getan hat, entsteht im Zielverzeichnis ein Verzeichnis "flash" mit den in Administra, Bellatrix und Regnatix zu flashenden Dateien, sowie ein Verzeichnis "sdcard". Dessen Inhalt wird auf eine SD-Card für den Hive kopiert.
Damit kann man unter Regime dann alles andere starten (ausgehend vom Root-Verzeichnis):
Basic mit

Code: Alles auswählen

∞ cd basic
∞ basic
Plexus mit

Code: Alles auswählen

∞ cd plexus
∞ plexus
Die in den Toolboxen enthaltenen Programme durch Wechsel in die Verzeichnisse und Aufruf den Programmes.

Es wäre schön wenn sich einige finden, die das alles mal testen. Z.B. könnte es durch die unterschiedlichen Zeichensätze und Zeilenenden der verschiedenen Betriebssysteme noch Probleme geben.

(Edit: Pfad Zielverzeichnis angepaßt)
Zuletzt geändert von joergd am Mo 5. Mai 2014, 12:49, insgesamt 1-mal geändert.
Viele Grüße

Jörg
Zeus
Beiträge: 142
Registriert: Di 31. Jan 2012, 23:06
Wohnort: Stuttgart

Re: Versionsverwaltung mit Git

Beitrag von Zeus »

Habs gerade mal kurz mit TriOS unter Windows ausprobiert, ohne mir die Problemstellen aber näher anzusehen.

Erste Erkenntnisse:
- man braucht bstc im Pfad.
- bei mir war das bin-Verzeichnis und dessen Unterverzeichnisse nicht da, die musste ich von Hand anlegen. Ist das abweichend von der Linux-Version konfiguriert? (da soll es ja in /home/... landen)
- "heapend" wird angemeckert (siehe make.log).
- .\system\administra\... gibt es bei mir nach dem clonen nicht, dementsprechend scheitern die Compile-Aufrufe.
Dateianhänge
make.log
(18.46 KiB) 843-mal heruntergeladen
joergd
Beiträge: 124
Registriert: Fr 20. Dez 2013, 20:08
Wohnort: Ronneburg

Re: Versionsverwaltung mit Git

Beitrag von joergd »

Erstmal vielen Dank für Deine Tests.
Zeus hat geschrieben:- man braucht bstc im Pfad.
Zumindest ist es damit am einfachsten. Man kann alternativ in der make.sh unter "# Pfade" hinter BSTC auch den kompletten Pfad angeben.
Zeus hat geschrieben:- bei mir war das bin-Verzeichnis und dessen Unterverzeichnisse nicht da, die musste ich von Hand anlegen. Ist das abweichend von der Linux-Version konfiguriert? (da soll es ja in /home/... landen)
Standardmäßig (da es in der make.sh so steht) landet es sowohl unter Linux als auch unter Windows in /home/ftp/hive. Windows will aber per default nicht in unbekannte Verzeichnisse unter c:\ schreiben und modelt das in
C:\Users\<username>\AppData\Local\VirtualStore\Program Files\Git\home\ftp\hive\flash
um. Das kann man wohl nur per Registry-Key ändern. Ich hab deswegen jetzt mal alle make.sh so geändert, daß nach ../Bin geschrieben wird, also ein Verzeichnis unter dem make.sh.
Zeus hat geschrieben:- "heapend" wird angemeckert (siehe make.log).
- .\system\administra\... gibt es bei mir nach dem clonen nicht, dementsprechend scheitern die Compile-Aufrufe.
Du hast wahrscheinlich die make.bat genommen. Das ist noch die ursprüngliche, nicht angepaßte Batch-Datei. Probiere es bitte mal mit make.sh. Das läuft unter der Git-Bash auch unter Windows.
Viele Grüße

Jörg
nubok
Beiträge: 131
Registriert: Di 11. Sep 2012, 19:03
Wohnort: Magdeburg

Re: Versionsverwaltung mit Git

Beitrag von nubok »

Nur mal so als Frage: hast du darüber nachgedacht, ein Buildsystem zu verwenden, in dem sowohl Windows als auch Linux First Class Citizens sind? Shell-Skripte erfüllen dieses Kriterium sicherlich nicht. Viele Programmierer (gerade im C/C++-Bereich) schwören auf CMake (http://www.cmake.org/ zumindest für C/C++-Projekte habe ich damit auch positive Erfahrungen (im verpflichtenden Unternehmenspraktikum im Studium wurde es eingesetzt)), aber es gibt auch viele andere Möglichkeiten. Ich persönlich würde wahrscheinlich, wenn CMake sich als ungeeignet für die eigenen Erfordernisse herausstellen sollte, es mit Python- statt mit Shellskripts versuchen, damit alle gewünschten Plattformen First Class Citizens sind, aber das ist nur meine persönliche Präferenz.
Drohne 0348 starb im mutigem Kampf gegen den Lötkolben einen Heldentod. Die Assimilierung geht mit Drohne 0371 weiter.
joergd
Beiträge: 124
Registriert: Fr 20. Dez 2013, 20:08
Wohnort: Ronneburg

Re: Versionsverwaltung mit Git

Beitrag von joergd »

Entscheidender Nachteil eines extra Buildsystems ist, daß eine zusätzliche Abhängigkeit entsteht. Wer dann sein System aus den Quellen bauen will, braucht zusätzlich zu diesen und zum bstc noch das Buildsystem. Unter Linux ist das ja meist schon da, unter Windows haben das hier wohl eher wenige installiert (oder?). Auch Python müßte zusätzlich istalliert werden. Deswegen halte ich vorerst die Bash-Scripte für keine schlechte Idee. Die aktuellen Quellen gibts derzeit nur im Git und wer Git istalliert hat, hat auch eine Bash. Fürs nächste Release würde ich eher noch versuchen, für Windows-Nutzer wieder die Batchdateien (make.bat) anzubieten.
Viele Grüße

Jörg
nubok
Beiträge: 131
Registriert: Di 11. Sep 2012, 19:03
Wohnort: Magdeburg

Re: Versionsverwaltung mit Git

Beitrag von nubok »

Das Problem, wenn man 2 Buildsysteme (Bash-Skripte, cmd-Skripte) verwendet, ist, dass erfahrungsgemäß diese rasch auseinanderdivergieren, wenn man keine 100%ige Disziplin an den Tag legt (insbesondere bedeutet dies, dass man bei jeder Änderung in einem der beiden Skripte auch testen muss, ob sie im anderen System funktioniert - sonst schiebt man es auf und ein paar Wochen später hat man Chaos). Kaum jemand bringt dies auf, weswegen das rasch chaotisch endet.

Aber fühl dich frei, meine Erfahrungen zu ignorieren. Vielleicht bekommst du es ja besser hin. :)

Für ein eigenes Projekt habe ich deswegen ernsthaft mit dem Gedanken gespielt, aus diesem Grund entweder komplett auf Python-Skripte umzustellen oder einen eigenen Shellskript-Generator, welcher automatisiert plattformspezifische Buildskripts erstellt, zu schreiben. Habe das Ganze erst einmal auf Eis gelegt - keine Zeit, ich muss Dissertation schreiben.
Die aktuellen Quellen gibts derzeit nur im Git und wer Git istalliert hat, hat auch eine Bash.
Das stimmt nicht. In der Tat bringt msysGit eine eigene Bash mit - allerdings gibt es zahllose andere Git-Clients für Windows (meist auf libgit2-Basis), die sich von dieser Unix-Tradition "befreit" haben und keine eigene Shell mitbringen. Hier mal ein paar Beispiele solcher Implementierungen
MSYS ist vom ganzen Aufbau in meinen Augen unter Windows ein Fremdkörper (weswegen ich persönlich kein Freund von Bash-Skripten unter Windows bin), Python und CMake dagegen nicht.
Drohne 0348 starb im mutigem Kampf gegen den Lötkolben einen Heldentod. Die Assimilierung geht mit Drohne 0371 weiter.
joergd
Beiträge: 124
Registriert: Fr 20. Dez 2013, 20:08
Wohnort: Ronneburg

Re: Versionsverwaltung mit Git

Beitrag von joergd »

Da hast Du schon recht, nubok, 2 Scripts sind schlechter wartbar wie einer. Sieht man ja schon, die make.bat vom TriOS funktioniert nicht mehr. Ich denke halt, für potentielle Neueinsteiger sollte der Beginn möglichst einfach sein. Deswegen möglichst wenige Abhängigkeiten...

Der Vorteil von Python erschließt sich mir aber bisher nicht. Unter Windows muß ich dafür Python installieren, da kann ich auch gleich eine Bash (z.B. win-bash) nehmen.

Klar ist nicht bei jedem Windows-Git eine Bash dabei. Ich hab mich auf die im ersten Beitrag geschilderte Installation des "offiziellen" Windows-Git-Clients bezogen.
Viele Grüße

Jörg
nubok
Beiträge: 131
Registriert: Di 11. Sep 2012, 19:03
Wohnort: Magdeburg

Re: Versionsverwaltung mit Git

Beitrag von nubok »

Das Problem ist folgendes: wenn es wirklich mit einer Kopie der Bash getan wäre, würde ich nicht gar so viel meckern. Das Problem ist, dass sich bei der Projektpflege mit der Zeit dann leicht immer mehr Abhängigkeiten von irgendwelchen UNIX-/POSIX-typischen Programmen einschleichen - zuerst nur die Standard-Shell-Kommandos, dann "make", anschließend noch ein "wget" usw. - da kommt dann rasch im Laufe der Zeit ein Schwanz zusammen.

Um ein relativ aktuelles Beispiel einer Inkarnation dieses Phänomens zu zeigen: https://github.com/mozilla/rust/wiki/Us ... on-Windows

Diese Installation ist nur zum Benutzen von Rust erforderlich. Wenn man es tatsächlich unter Windows bauen will, ist die Liste sogar bedeutend länger: https://github.com/mozilla/rust/wiki/No ... oping-Rust

Man sieht:
  • As of release 0.10, Rust still depends on GCC for platform linker and C runtime libraries and C runtime libraries
    Abhängigkeit von gcc (es wird sich nicht einmal Mühe gegeben, dass das Ganze auch unter Visual C++ compiliert) - gcc besitzt einen ganzen Rattenschwanz an weiteren Abhängigkeiten. Ebenso wird gleich auf einen (sicherlich mäßig an die Windows-Besonderheiten angepassten) Port der C Runtime gesetzt
  • The current recommended way of obtaining Rust's prerequisites is by using the mingw-w64 installers from the mingw-builds project.
    Eine Liste des Rattenschwanzes an Abhängigkeiten von Linux-Tools kann man unter https://github.com/mozilla/rust/wiki/No ... oping-Rust nachlesen.
  • Verify Rust installation at mingw-builds terminal by typing rustc --help
    Würde mich wirklich interessieren, warum sogar der Aufruf zum Überprüfen der Korrektheit der Installation auf dem mingw-Terminal ausgeführt werden soll.
Interessanterweise ist dies ein typisches Phänomen von Ports Unix -> Windows; in der umgekehrten Richtung habe ich noch kein analoges Problem gesehen (zum Ausgleich für alle UNIX-Liebhaber: ja, natürlich gibt es da auch typische Unschönheiten bei Windows->POSIX-Ports, aber die sind anderer Natur. Dazu werde ich allerdings hier nichts schreiben, da es sonst arg Off Topic wird).
Drohne 0348 starb im mutigem Kampf gegen den Lötkolben einen Heldentod. Die Assimilierung geht mit Drohne 0371 weiter.
Zeus
Beiträge: 142
Registriert: Di 31. Jan 2012, 23:06
Wohnort: Stuttgart

Re: Versionsverwaltung mit Git

Beitrag von Zeus »

Du hast wahrscheinlich die make.bat genommen. Das ist noch die ursprüngliche, nicht angepaßte Batch-Datei. Probiere es bitte mal mit make.sh. Das läuft unter der Git-Bash auch unter Windows.
Habe nochmal alles neu abgerufen und mit der Git-Bash ausprobiert zu kompilieren. Sieht gut aus, jetzt lies sich alles sauber übersetzen.
Auf dem Hive ausprobiert habe ich die Binaries noch nicht, das teste ich am Wochenende.

Damit gibts dann nur noch die make.sh die unter beiden Umgebungen (Linux/Windows) verwendet werden kann. Ich denke das passt.
Am besten die make.bat löschen, dann kann die Datei nicht bei Windows-Nutzern verwirren.
Antworten