Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   Projektstruktur + DVCS in der (Delphi) Praxis (https://www.delphipraxis.net/190934-projektstruktur-dvcs-der-delphi-praxis.html)

Jumpy 22. Nov 2016 10:42

Projektstruktur + DVCS in der (Delphi) Praxis
 
Hallo,

nachdem es ja in jüngerer Zeit mal wieder eine Diskussion gab "((Git vs. Mercurial) vs. SVN) vs. Zip" habe ich nun vor auf DVCS umzusteigen (welches steht noch nicht ganz fest) und möchte bitte diese Diskussion nicht wieder aufkommen lassen. Ich komme übrigens von "Copy Projekt Ordner", also noch nicht mal Zip :-D;
Stattdessen hoffe ich, das bekennende DVCS Nutzer :-D mir meine folgenden Fragen beantworten können.
(die anderen dürfen natürlich auch was sagen, spez. zu Punkt 3) :-))

1) Ich hätte gerne auch je Projekt ein zentrales Repository und überlege nun dies einfach auf einem Netzlaufwerk einzurichten und dafür nicht extra einen Server o.ä. aufzusetzen. Geht das oder ist das später irgendwann unpraktisch. Oder kann man später immer noch auf einen Server umstellen?

2) Legt man das zentrale Repository (durch clonen meines lokalen) so an, dass da nur Repository-Infos und nicht die eigentlichen Dateien liegen, was macht in der Praxis Sinn?

3) Wie sieht es dann in der Delphi-Praxis (nicht der DP :-D)aus: Welche Ordner legt man an für ein Delphi-Projekt und welche (Delphi-)Dateien kommen wo hin. Frage ist bezogen auf generelles Arbeiten mit der Delphi-IDE, aber auch mit Hinblick auf DVCS.

Frage 3) könnte man vllt. an einem kleinen Beispiel erklären?
Projekt Vereinsverwaltung -> Vereinsverwaltung.dpr, Vereinsverwaltung.exe, usw.
Hauptformular aMAIN -> aMain.pas, .dfm
Weitere Formulare analog?
Icon-Datei Icon.Ico -> .rc-Dateie usw.
Plus die Dateien, die Delphi automatisch erzeugt (auch History).

Welche Ordner legt man dafür an?
Welche Dateien kommen in welchen Ordner?
Welche Pfade muss man wie (relativ?) in der IDE angeben?
Wo kommt das Repository ins Spiel?
Was soll man aus dem DVCS ausschließen (.exe, .res., ...)?


Mir ist klar, dass es für 3) wahrsch. mehrere Lösungen geben wird, wäre nett, wenn ihr mir eure Arbeitsweise da zeigen würdet ggf. auch warum und niemanden kritisiert wenn er es anders macht.
Danke

Der schöne Günther 22. Nov 2016 10:55

AW: Projektstruktur + DVCS in der (Delphi) Praxis
 
Ich bin da jetzt kein Profi. Ohne groß nachzudenken:

Zu 1):
Wir haben auch keinen Super-Spezialserver. Einfach ein Windows-Dateifreigabe auf einem Server und gut ist. Synchronisiert wird dann einfach gegen
Delphi-Quellcode:
\\myServer\Repos\myProject
. Kannst du später sicher einfach "upgraden" auf irgendetwas tolles, aber ich persönlich habe nie die Notwendigkeit gesehen.


Zu 2):
Es macht keinen Sinn die Daten auf dem Server (wenn du es z.B. denn über Windows-Dateifreigabe machst) dort nochmal redundant ausgepackt in irgendeiner Version zu haben. Frisst nur Unmengen Platz. Die "Arbeitskopie" macht nur für den arbeitenden Programmierer Sinn, nicht für den Server gegen den alle synchronisieren.

Zu 3)
Ich glaube du machst dir da zu viele Gedanken. Der Versionsverwaltung ist das egal wie deine Dateien heißen und wo sie liegen. Wichtig sind mMn nur die "Ignores", also was per se nicht versioniert wird. Google einfach mal nach "Delphi ignore files", da findest du schon vorgefertigte Templates welche Dateien ausgeschlossen werden sollten (das RAD Studio legt ja echt eine Menge an!).

Stevie 22. Nov 2016 11:12

AW: Projektstruktur + DVCS in der (Delphi) Praxis
 
1) Kannst mit nem Verzeichnis auf ner Freigabe anfangen (wenn möglich dort, wo auch eine Datensicherung läuft)

So haben wir mit git auch angefangen, inzwischen nutzen wir selfhosted GitLab.

2) Wie man aus einem bestehenden Verzeichnis mit Dateien ein Repository bekommt, sollte in jeder Doku zum jeweiligen DVCS stehen - einfach dort mal reinschauen

3) Grundregel ist, alles was aus Sourcen etc rekonstruiert (kompiliert werden kann) kommt nicht in die Versionsverwaltung. Das heißt also keine exen und teilweise auch ggf keine res Dateien oder ähnliches. Außerdem der ganze lokale temporäre Klump, den die IDE so anlegt - wie Günther schon sagte, einfach ne default ignore Datei nehmen, ins Repo packen und dann kannst eh nur noch den Rest hinzufügen.

Wie du deine Codedateien und Verzeichnisse strukturierst, ist komplett dir überlassen.

Ghostwalker 22. Nov 2016 14:53

AW: Projektstruktur + DVCS in der (Delphi) Praxis
 
So...nu mein Senf :)

Zu 1. und 2. wurde ja schon geantwortet, und ich kann da nix weiteres dazu sagen

Zu 3. Bei mir sind die Ordner-Strukturen wie folgt aufgebaut:

projektname\bin

Dort kommen die exe und die dll's rein die zum Projekt gehören. Die kommen nicht in
die Versionsverwaltung, wäre nur unnötige Speicherplatzverschwendung.

(Projekt-Optionen -> Verzeichnisse -> Ausgabeverzeichnis)

projektname\dcu

Da landen die vom Compiler erzeugten DCU's rein. Ich hab das abgetrennt vom Bin-Verzeichnis
um einfach mal jemanden nen compilierten Stand zu schicken :)

Landet auch nicht in der Versionsverwaltung

(Projekt-Optionen -> Verzeichnisse -> Ausgabe für Units)

projektname\source

Da landen die Quelltextdateien und dfm's und rc's. Die direkt zum Projekt gehören.

projektname\thirdparty

Da landen die Quellen von externen (also nicht direkt zum Projekt gehörenden) Bibleotheken.

Sollte mit in die Versionsverwaltung, damit man bei älteren Ständen auch die entsprechenden
Versionen der Bibleotheken hat.

(Projekt-Optionen -> Verzeichnisse -> Suchpfad)

projektname\gfx

Dort landen Grafiken (Icons, bitmaps usw), Sounddateien und alles was als Resource eingebunden
wird.

Sollte ebenfalls in die Versionsverwaltung. Letztlich sind es auch Source-Dateien und nichts
ärgert mehr, als ein vermurkstes Icon :)

projektname\hlp

Dort landen die fertigen (compilierten) Hilfe-Dateien.

Diese sind bei mir nicht in der Versionsverwaltung

projektname\Doc

Dokumentationen und Help-Projekte.

Die kommen mit in die Versionsverwaltung.


projektname\localization

Für die Lokalizationsdateien.

Die kommen mit in die Versionsverwaltung.

Im Hauptverzeichnis des Projekts stehen so (zumindest bei mir) nur noch Projekt-Einstellungen bzw. die Projektdatei der IDE. Als Single-Entwickler nehm ich sie mit in die Versionsverwaltung. Damit
kann ich sicherstellen, das die Einstellungen die gleichen sind, wie für den gg. Stand. Wenn mehrere
Entwickler daran arbeiten, sollte nur ein "Grund"-Stand rein, da Suchpfade u.ä. ja unterschiedlich
sein könnnen. Ich denk mal hier scheiden sich die Geister :)

himitsu 22. Nov 2016 16:01

AW: Projektstruktur + DVCS in der (Delphi) Praxis
 
Ist zwar alt, aber ein Anfang.
http://delphi.wikia.com/wiki/Delphi_File_Extensions

Ich lege Desktop-, Config- und Cache-Dateien nicht ins DVCS.
Wenn man nicht alleine arbeitet ist es eh blöd, da jeder seine eigenen Einstellungen benutzt.
> *.dsk *.dof *.identcache *.local
Am Besten stetzt man diese Dateien auch auf ignore, damit man sie nicht ständig beim checkin sehen muß.

__histroy im DVCS ist doch bissl sinnlos :zwinker:
Und Delphi lässt das eh leer, wenn es SVN/Git entdeckt ... dann geht die Unit-Historie im Delphi sogar direkt da darauf und nicht auf's __history.
Also auch auf Ignore stellen.
Delphi hat ja dafür eine Integration, seit 'ner Weile. Da kann man dann auch direkt in der Projektverwaltung die Änderungen hochladen, aber ich mach das lieber im Explorer.

Dateien die immer wieder automatisch generiert werden und die sich vorallem auch JEDESMAL ändern, kommen besser auch nicht rein.
*.dcu, aber nur wenn die *.pas existiert, checke ich nie ein
*.exe und eigentlich alle Compilerausgaben muß man auch nicht einchecken, denn die kann man jedesmal aus dem Source neu generieren.
Außer vielleicht bei EXEn von "Subprojekten", die man fast nie kompilert, weil sich fast nie was dran ändert, aber die man immer wieder braucht.

Bei *.res der Projekte ... zum Kompiliere braucht man die eigentlich, drum check ich die mit ein.
Delphi kann die Projekt-RES aus der *.dproj zum Großteil neu genierieren, aber genauso kann man die *.dproj löschen und sie sich aus der DPR+RES neu genierieren lassen.

mquadrat 23. Nov 2016 06:40

AW: Projektstruktur + DVCS in der (Delphi) Praxis
 
Zitat:

Zitat von Stevie (Beitrag 1354378)
1) Kannst mit nem Verzeichnis auf ner Freigabe anfangen (wenn möglich dort, wo auch eine Datensicherung läuft)

So haben wir mit git auch angefangen, inzwischen nutzen wir selfhosted GitLab.

2) Wie man aus einem bestehenden Verzeichnis mit Dateien ein Repository bekommt, sollte in jeder Doku zum jeweiligen DVCS stehen - einfach dort mal reinschauen

3) Grundregel ist, alles was aus Sourcen etc rekonstruiert (kompiliert werden kann) kommt nicht in die Versionsverwaltung. Das heißt also keine exen und teilweise auch ggf keine res Dateien oder ähnliches. Außerdem der ganze lokale temporäre Klump, den die IDE so anlegt - wie Günther schon sagte, einfach ne default ignore Datei nehmen, ins Repo packen und dann kannst eh nur noch den Rest hinzufügen.

Wie du deine Codedateien und Verzeichnisse strukturierst, ist komplett dir überlassen.

Für uns gilt das ebenfalls. Wichtig bei der Struktur ist nur, dass die bei allen deinen Projekten gleich ist. Dann kann man später einfacher einen CI-Server hintendran hängen

Jumpy 23. Nov 2016 08:34

AW: Projektstruktur + DVCS in der (Delphi) Praxis
 
CI-Server ist noch in weiter ferne. Erstmal anfangen mit DVCS und dann Unit-Tests zu arbeiten. Trotzdem habe ich die Frage 1) und 2) genau deswegen gestellt. Ich will verhindern, dass ich es mir am Anfang zu einfach mache (mit Repo auf Netzlaufwerk) und dann später die Probleme bekomme. Aber so wie ihr das schildert, muss ich mir da keine Sorgen machen. Danke dafür.

Zu 3) habe ich mir wohl tatsächlich zuviele Gedanken gemacht wie es scheint, d.h. ich muss nur eine entsprechende ignore-Datei benutzen. Danke für die Ansätze dafür und Hinweise was da rein soll und was nicht.

@Ghoswalker: Danke für deinen Senf. Sowas hat mich nämlich auch interessiert (nicht nur wg. DVCS, sondern auch mal allgemein), wie man seine Projekte sinnvoll strukturiert, denn sowas gibt es bei uns derzeit nicht, da liegt alles was zu einem Projekt gehört in einem Ordner und das kann schon mal unübersichtlich werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz