HowTo gesucht, Lazarus mit GIT oder SVN

Für Installationen unter Windows
Antworten
aseitzinger
Beiträge: 10
Registriert: Mi 18. Apr 2012, 15:07

HowTo gesucht, Lazarus mit GIT oder SVN

Beitrag von aseitzinger »

Moin Forum,

ich arbeite mich gerade in GIT ein und frage mich, welche Einstellungen sinnvoll sind.
z.B.
wohin kommen die Objektdateien, die DLLs und die EXE

Ich programmiere mit Lazarus in einem kleineren Team Anlagensteuerungen (für industrielle Fertigungs- und Prüfanlagen)-

Bisher sind meine / unsere Projekte so aufgebaut, dass es ein Library-Verzeichnis gibt, in dem die 'allgemeineren' Funktionen und Units enthalten sind (z.B. Ansteuern eines Multimeters, allgemeine Funktionen für LIN-Bus, CAN-Bus, Kommunikation mit Feldbussen, dlls für die erwähnten Funktionalitäten) und dann das Projektverzeichnis, in dem die anlagenspezifischen Sachen programmiert werden bzw. enthalten sind. Für die Units in dem Library-Verzeichnis gilt die Richtlinie, dass die Rückwärtskompatibilität immer gegeben sein sollte. Wenn ich also jetzt ein neues Projekt anlege, kopiere ich mir die Library und ein leeres Beispielprojekt in mein Projektverzeichnis und fange an.... Ist in einer Library-Unit noch eine Erweiterung nötig oder ein Fehler entdeckt, dann droht schon das erste Durcheinander...

Das Library-Verzeichnis und das Projektverzeichnis würde ich gerne mit GIT verwalten, jetzt mal die Frage an die User, die sowas schon einsetzen, welche Vorgehensweise und welche Einstellungen nutzt ihr da so? Welche Dateien landen denn im GIT, habt ihr da Automatismen zum Committen, wo legt ihr die Objektdateien und die Exes ab?

Bitte Vorschläge

Arno

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: HowTo gesucht, Lazarus mit GIT oder SVN

Beitrag von mse »

Für git gibt es ein handliches und leistungsfähiges Werkzeug welches in Free Pascal geschrieben ist:
http://sourceforge.net/projects/mseuniverse/
SVN würde ich nicht mehr verwenden.
Wichtig zu wissen ist, dass git den Datenbestand als Ganzes betrachtet, es gibt also keine "branches" als Verzeichnisse wie bei SVN. Es gibt auch keinen Unterschied zwischen "Server" und lokalen repositories, alle haben die gleiche Struktur.
Jede Kopie des Repositories ('File'-'Clone git repo') enthält die gesamte History des Projektes in einer Datenbank im Verzeichnis "<projektroot>/.git" . Aus dieser Datenbank werden die Dateien eines gewünschten Zustandes (snapshot) in das <projektroot>-Verzeichnis kopiert. git bildet für jeden snapshot eine SHA-1 Quersumme über alle Daten womit die snapshots identifiziert werden.
Ein "branch" ist eine Liste von verketteten snapshots, ein "tag" ein bestimmter snapshot.
Änderungen von einem branch lassen sich auf andere branch übertragen ("merge","rebase").
In der Regel entwickelt man im "master" oder "development" branch. Von Kollegen durchgeführte Änderungen holt man regelmässig vom Server ab ("pull"), normalerweise werden die Änderungen automatisch in die eigene lokale snapshot-Kette durch "merge" eingepflegt, wenn man das nicht will, benutzt man "fetch" statt "pull",
Sobald die Software einen Stand erreicht hat mit dem die Kollegen arbeiten können, überträgt man die Änderungen zum entsprechenden Server mit "push".
Nach durchgeführten Tests und reviews werden die Änderungen am "master" branch zum "fixes_nnn" branch ge"merge"ed. Bei einem Release wird die SHA des entsprechenden "fixes_nnn" snapshots mit "tag" festgehalten und der snapshot zur Sicherheit in ein separates Verzeichnis exportiert.
Bei sehr kleinem Softwarebestand ist es am einfachsten, Bibliotheken und Projekte in einem einzigen git repository zu halten. Oder man hat separate repositories für Projekte und Bibliotheken, dann muss man die gewünschten Versionen in den Verschiedenen repositories einzeln umschalten.
Eine weitere Möglichkeit sind git "submodule"
http://git-scm.com/docs/git-submodule
Für den git Server hat sich gitolite gut bewährt:
http://gitolite.com/gitolite/index.html

Bitte stelle allfällige Fragen zu MSEgit hier:
viewforum.php?f=53
Ein einführender thread ist hier:
http://article.gmane.org/gmane.comp.ide ... user/32275
Die git Dokumentation ist hier:
http://git-scm.com/documentation/

Edit: exes und Objektdateien gehören meiner Meinung nach nicht ins git repository.

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: HowTo gesucht, Lazarus mit GIT oder SVN

Beitrag von marcov »

Ich mach SVN mehr als GIT. Einfacher im Praxis und Handhabung.

Typisch nutze ich nur default Einstellungen, und ein Repository Layout wie im Handleitung aber wenn man das Präzise machen will, kann man auch die autoproperty Metatypen setzen (welche Extensionen "text" sein, und welche nicht).

Antworten