Lazarus, X-Compiling und Git

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 638
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 19.2 , FPC 3.0.4 , Lazarus 2.0.x -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Lazarus, X-Compiling und Git

Beitrag von kralle »

Moin,

nach dem ich jetzt meine beiden (3 OS) Rechner soweit eingerichtet habe, würde ich gerne auch noch Git einrichten.

Wenn ich das jetzt schon einrichte, dann soll das auch "Zukunftssicher" sein.
Aktuelles Ziel :

1. "Git" auf beiden Linux-Maschinen (zur Zeit "Debian KDE" und "Mint Cinnamon 19.3") und "Windows 10 Home" installieren..
-- Da hilft mir diese Anleitung: https://www.atlassian.com/de/git/tutori ... -git#linux
-- Muss mir dabei jeden Schritt aufschreiben, da ich nur zwei Hände habe und nicht gleichzeitig auf zwei Rechnern mit drei OS arbeiten kann. :-)

2. Die "Git-Gui" überall einrichten.
-- Für Linux über die Paketverwaltung und für Windows z.B. einen hier von: https://git-scm.com/download/gui/windows

3. Dafür sorgen, das Git seinen Sachen auch auf dem NAS speichert.
-- Unter Linux, muss ich dafür Sorgen, das der entsprechende NAS.Pfad, beim Systemstart gemounted wird. Muss ich mir noch erarbeiten.

4. Git mit Lazarus verbinden.
-- Z.B. direkter Aufruf der GUI aus Laz.
-- Und dann kommen hier die Fragen nach dem eigentlichen Workflow.

- Wenn ich mittels Laz für verschiedene OS kompilieren will, wie separiert man die einzelnen Zweige in Git oder braucht man das nicht?
-- Grundsatzfrage: Wie baut man das Projektverzeichnis in diesem Fall am besten auf und wie passt man die Build-Mode am besten an?

- Ist es sinnvoll, Git vor jedem Kompilieren laufen zu lassen, damit man bei einem Crash, an den Stand vorher herankommt.

- Wie stellt man sicher, das die drei OS immer an der gleichen Version arbeiten (aktuell nicht zeitgleich)?

Da wartet noch einiges an Arbeit auf mich und noch einiges an Fragen die ich bestimmt hier stellen werde.
Vielleicht wird da hinterher quasi eine Step-by-Step-Anleitung draus.

Vielleicht können wie das ja zusammen erarbeiten. Ich/man kann ja jeden Schritt in einen Codeblock packen, dann kann man diese hinterher zu einem Dokument zusammen kopieren.

Gruß Heiko
Linux Mint 19.3 , FPC-Version: 3.3.1 , Lazarus 2.1.0
+ Delphi XE7SP1

hum4n0id3
Beiträge: 7
Registriert: So 5. Mai 2019, 15:23

Re: Lazarus, X-Compiling und Git

Beitrag von hum4n0id3 »

Für Git nutze ich eigentlich Git-Bash (Windows) bzw. auf dem Macos git aus dem terminal. Das funktioniert überall gleich, wohl auch unter Linux. Dazu nutze ich die Tools die mir eine IDE oder Editor, ich nutze VSCode, anbieten. Man arbeitet sich eigentlich sehr schnell rein.

Dazu empfehle ich noch die gitignore.io Hier kann man sich schnell und einfach sinnvollen Inhalt für die .gitignore-Datei holen. Man muss nämlich nicht alles versionieren, auch unter Lazarus nicht.

Bei Lazarus separiere ich den Code nicht, bzw. musste ich bisher gar nicht. Ein Projekt zb. unter Windows erstellen und programmieren. Bist du dann unter Linux, müsste ein clonen bzw. aktualisieren reichen. Dann musst du die Software einfach compilieren können. Ausnahmen wären dann, wenn du bestimmte OS-Features nutzt oder speziell für ein OS die Software compilierst.
- Wie stellt man sicher, das die drei OS immer an der gleichen Version arbeiten (aktuell nicht zeitgleich)?
Dazu ein Tutorial zu Git durch arbeiten. Gibt im Netz genug und würde hier den Beitrag sprengen :)

Ich kann das hier empfehlen: https://rogerdudler.github.io/git-guide/index.de.html

Warf
Beiträge: 1414
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: MacOS | Win 10 | Linux
CPU-Target: x86_64
Wohnort: Aachen

Re: Lazarus, X-Compiling und Git

Beitrag von Warf »

Ich würde dir noch einen Git server empfehlen, z.b. Gitlab oder Gitea. Wenn du ja eh ein NAS hast, einige NAS können VMs oder sogar Docker laufen lassen, da könntest du das dann drauf hosten.
Abgesehen davon, mal zu deinen einzelnen punkten:
1. "Git" auf beiden Linux-Maschinen (zur Zeit "Debian KDE" und "Mint Cinnamon 19.3") und "Windows 10 Home" installieren..
Dafür sollte man eigentlich nicht wirklich ne anleitung brauchen, ist ganz einfach: Windows: Exe runterladen und installieren, Linux: Über paketmanager deiner Distro installieren.
Konfigurieren muss man git eigentlich gar nicht (abgesehen von name und e-mail, das sagt einem git aber auch wenn man commiten möchte nochmal wie das geht).
2. Die "Git-Gui" überall einrichten.
Also ich finde die git gui grässlich. Gibt ein paar GUI tools für git die brauchbar sind, grundsätzlich kann ich aber nur empfehlen mit git in der konsole warm zu werden. Vor allem wenn du erfahrener mit git wirst kannst du aliase (makros) für git definieren mit denen du dann viele arbeitsabläufe automatisieren kannst, was du in einem GUI schlicht weg nicht hast (ich hab z.b. das makro git fork-master, was änderungen stasht, master auscheckt, pullt, und in einen neuen branch forkt. In einer GUI wären das 4 schritte statt einem).
3. Dafür sorgen, das Git seinen Sachen auch auf dem NAS speichert.
Ich kann dir wirklich nur sowas wie Gitlab empfehlen, das kannst du privat auf einem rechner hosten, das bietet nicht nur die git standard features, sondern noch ne ganze menge anderer features, z.B. CI/CD womit du automatisch bei jedem push die sourcen compilen kannst um z.b. Compilierfehler zu entdecken, oder einen Release zu bauen den du dann einfach runterladen kannst.
Ich kann z.b. einfach bei einem meiner projekte eine zeile ändern, pushen und es wird vollautomatisch für Windows und Linux gebaut und ich kann mir den release einfach via der gitlab wesite runterladen.
4. Git mit Lazarus verbinden.
Ich weiß nicht wirklich ob das geht, ich hab einfach immer ne konsole im aktuellen projekt ordner offen (hab ich sowiso, selbst ohne git)
- Wenn ich mittels Laz für verschiedene OS kompilieren will, wie separiert man die einzelnen Zweige in Git oder braucht man das nicht?
-- Grundsatzfrage: Wie baut man das Projektverzeichnis in diesem Fall am besten auf und wie passt man die Build-Mode am besten an?
Du brauchst keine eigenen branches für die verschiedenen cross builds, {$ifdef LINUX} oder {$ifdef Windows} im code sollte vollkommen ausreichend sein.
Build modes brauchst du wenn du cross compilen willst, da stellst du für jedes target einfach einen build mode ein. Außerdem würde ich noch einen Debug-Build mode haben, der plattform unabbhängig ist
- Ist es sinnvoll, Git vor jedem Kompilieren laufen zu lassen, damit man bei einem Crash, an den Stand vorher herankommt.
Je nachdem wie du arbeiten willst. Willst du git als dokumentationstool haben, dann mach lieber eher große "vollständige" commits, i.e. ein commit für ein komplettes (sub)feature, und schreib in die commit message dann auch was rein was hilfreich ist. Ich schreib meist eine headline die alles zusammenfasst sowie 1-3 paragraphen die dann erklären was genau gemacht wurde.

Wenn du git nur für das VCS willst und dich commit messages nicht interressieren (sieht man öfters, so git logs in denen jeder commit eine message mit weniger als 10 wörtern hat), dann lohnt es sich einfach in regelmäßigen abständen (z.b. alle stunde, alle 100 lines oder so) zu committen damit du genau zurückblicken kannst was du wann gemacht hast.

Ich empfehle persönlich eher die erste rangehensweise, da wenn du nach nem jahr oder so mal dir eine bestimmte feature implementierung/änderung ansehen willst, findest du sie beim zweiten ansatz schlicht weg nicht. Ohne vernünftige commit messages und commit strukturen (z.b. 5 commits die eigentlich zusammen gehören verstreut über 20 andere commits), hast du einfach keine chance raus zu finden welcher stand jetzt genau der war den du suchst. (oftmals hat man dann auch das problem das ein commit noch nicht fertig war, der nächste aber schon ein anderes feature angefangen hat).
- Wie stellt man sicher, das die drei OS immer an der gleichen Version arbeiten (aktuell nicht zeitgleich)?
Wenn nicht zeitgleich, dann ganz einfach: bevor du was machst pullen, nachdem du fertig bist commiten und pushen.

Wenn zeitgleich, dann für jedes feature einen eigenen branch bauen, und dann wenn der branch fertig ist in master mergen. Somit bleibt die arbeits version stabil (die version vom zeitpunkt des branches) bzw. kann nach einem merge auf master auch auf den anderen branches geupdated werden.
Was du nicht willst ist zeitgleich auf dem selben branch arbeiten, besonders wenn rebases gemacht werden, denn dann kannst du ganz schnell sachen kaputt machen.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4110
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Lazarus, X-Compiling und Git

Beitrag von af0815 »

Bervor ich auf einen Rechner anfange, mache ich ein Pull um den richtigen/aktuellen Stand am Rechner zu haben. Zwischendurch mache ich die Stage+Commits wenn was einen gewissen Fortschritt hat, ist Gefühlssache. Wenn ich den Rechner verlasse, dann ein Commit + Push auf den Server. Somit ist es mir egal auf welchen Rechner ich arbeite.

Cross-Compiling: Ich lege mir verschiedene Projekt Buildmodes an. Nicht nur Debug/Releas, sondern das ganze auch für jede unterschiedliche Plattform. Damit kann man auch die Librarypositionen etc. auseiander halten. Nachdem ich meisten die Grundlagen auf einen WIndowsrechner mache, allerding Cross auf die verschiedene Plattformen. Damit benötigt man auch die Libs von der Plattform beim Linken.

Unter WIndows verwende ich TortouiseGIT und bei Linux Guitar jeweils auf der Oberfläche. Zusätzlich kann man natürlich auch auf der Kommandozeile arbeiten. In Lazarus habe ich kein GIT integriert, da das mir als extra Programm lieber ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 572
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04)
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Lazarus, X-Compiling und Git

Beitrag von fliegermichl »

So ähnlich mache ich das auch nur alles in der Konsole.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 4110
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Lazarus, X-Compiling und Git

Beitrag von af0815 »

Auch eine gute .gitignore ist hilfreich
# Lazarus compiler-generated binaries (safe to delete)
*.exe
*.dll
*.so
*.dylib
*.lrs
*.res
*.compiled
*.dbg
*.ppu
*.o
*.or
*.a

# Lazarus autogenerated files (duplicated info)
*.rst
*.rsj
*.lrt

# Lazarus local files (user-specific info)
*.lps

# Lazarus backups and unit output folders.
# These can be changed by user in Lazarus/project options.
backup/
*.bak
lib/

# Application bundle for Mac OS
*.app/

# Some Helper apps
DIPasDoc_Console.exe
/Readme_original.txt

# Delphi compiler-generated binaries (safe to delete)
*.bpl
*.bpi
*.dcp
*.apk
*.drc
*.map
*.dres
*.rsm
*.tds
*.dcu
*.lib
*.ocx

# Delphi autogenerated files (duplicated info)
*.cfg
*.hpp
*Resource.rc

# Delphi local files (user-specific info)
*.local
*.identcache
*.projdata
*.tvsconfig
*.dsk

# Delphi history and backups
__history/
__recovery/
*.~*
/source/bin

# some stuff
*.log
Vereinfacht den Start in GIT :-) Einfach in das Verzeichnis reinstellen wo auch das .git Verzeichnis ist. Der Name MUSS ZWINGEND .gitignore sein.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten