AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Versionskontrollsystem einrichten (GIT) - Ideen
Thema durchsuchen
Ansicht
Themen-Optionen

Versionskontrollsystem einrichten (GIT) - Ideen

Ein Thema von bernau · begonnen am 11. Mär 2024 · letzter Beitrag vom 13. Mär 2024
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#1

Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 11. Mär 2024, 19:17
Ich habe Mercurial mit TortoiseHG als Versionskontrollsystem eine Zeit lang lokal verwendet. Irgendwie ist die Nutzung aber eingeschlafen. Fragt mich nicht warum. Ist so passiert. Egal.

Über verschiedene andere Projekte bin ich mit Github/GitLab und somit mit GIT allgemein in Berührung gekommen. Ich habe mir nun zum Test im lokalen Netz einen GitLab-Server eingerichtet und mit "Spielverzeichnisen" den Workflow (Commit,Push,Pull, etc.) getestet. Ich bin ganz zufrieden damit und bin jetzt soweit, dass ich richtig damit starten kann.

Bisher (also damals war der ganze Code nur Lokal auf meinem Rechner. Alles ist in ein großes Repository (DelphiDir) gekommen. Für die verschiedenen Projekte und Tools habe ich dann Labels verwendet um die Commits einigermaßen auseinander zu halten. Jetzt wo ich neu Anfange, möchte ich mir mal ein paar Ideen geben lassen, wie ich das ganze besser organisieren kann.

Meine Verzeichnisstruktur sieht vereinfacht ungefähr so aus:

Code:

DelphiDir ---- CommonUnits ----- UnitGroup1
           |                 |-- UnitGroup2
           |                 |-- UnitGroup3
           |
           |-- Projects -----ProjectgroupA-----ProgrammA1
                          |                 |--ProgrammA2
                          |                 |--ProgrammA3
                          |                 |--common
                          |
                          |--ProjectgroupB-----ProgrammB1
                          |                 |--ProgrammB2
                          |                 |--ProgrammB3
                          |                 |--common
                          |
                          |
                          |--ProjectgroupUniversal-----ProgrammUniversal1
                                                    |--ProgrammUniversal2
                                                    |--ProgrammUniversal3
Alle Programme im Verzeichnis Projects verwenden Units aus CommonUnits
Programme aus ProjectgroupA und ProjectgroupB verwenden auch Units\Forms aus ProjectgroupUniversal
Programme aus ProjectgroupA verwenden units aus ProjectgroupA\common
Programme aus ProjectgroupB verwenden units aus ProjectgroupB\common

Wie gesagt, ich überlege mir jetzt ob ich wieder ein großes Repository mache, oder ob ich mehrere projektbezogene Repositories anlege. Wie ist euer Workflow?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.082 Beiträge
 
Delphi 12 Athens
 
#2

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 11. Mär 2024, 20:22
Wenn die CommonUnits im SearchPath des Compilers liegen
und vielleicht sogar vorkompiliert,
dann ist es doch egal, wo sie liegen


Natürlich könnte man die Struktur auch so belassen und Teile/Verzeichnisse davon einzlen in eigene Repository,
notfalls auch noch mit einem/mehreren Master-Repository und dann darin mehrere SubModules (eingebettete Unter-Repository)
und das auch notfalls auch mehrfach verschachtelt.
(falls Einiges immer an einem bestimmten Ort liegen muß)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (11. Mär 2024 um 20:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 12. Mär 2024, 06:29
Moin...
Zitat:
Wie gesagt, ich überlege mir jetzt ob ich wieder ein großes Repository mache
...schlechte Idee.
Begründung:
Alle Commits ALLER Projekte in einem "Graph" ist unübersichtlich. Ich hab immer "develop" und "release" Zweige pro Projekt. (Bilder) Stelle dir vor, daß noch Commits dazwischen liegen. Was gehört wozu? "Master" wäre bei einem großen Repro für alle da...

Zitat:
war der ganze Code nur Lokal auf meinem Rechner...
Ich habe mir nun zum Test im lokalen Netz einen GitLab-Server eingerichtet...
...noch schlechtere Idee. Besser Außer Haus...Bitbucket, GitHub etc. Lokal nur mit entsprechender Backup Strategie.

PS:
Auch ein Ticketsystem ist brauchbar. Statt Labels hast du dann Ticketnummern und eine Historie der "Aufgabe" (Bild2)
https://mantisbt.org/ ...Freeware (Bild3)

PS:
Zitat:
Irgendwie ist die Nutzung aber eingeschlafen.
Ich könnte mir nicht mehr vorstellen ohne ein Versionskontrollsystem zu arbeiten. Ständig springen zwischen Zweigen, zurücksetzen, vergleichen...und das ohne? Nö.

Miniaturansicht angehängter Grafiken
git.png   git1.png   mantis.jpg  

Geändert von haentschman (12. Mär 2024 um 06:54 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 12. Mär 2024, 07:04
Moin...
Zitat:
ob ich wieder ein großes Repository mache
...schlechte Idee.
Begründung:
Alle Commits ALLER Projekte in einem "Graph" ist unübersichtlich.
Jetzt könnte man sich aber fragen, weshalb Microsoft, Facebook, Google das alle so machen.

https://monorepo.tools/#what-is-a-monorepo


Ich bin aber ganz ehrlich, wir haben uns mit so etwas auch nicht anfreunden können. Fahren weiterhin den klassischen Pfad, dass eine interne Library (dein Ordner "CommonUnits") ein eigenes Repo ist.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 12. Mär 2024, 07:21
Zitat:
weshalb Microsoft, Facebook, Google das alle so machen
...Submodule hinter Submodule. Imho. Wer kann sich den "Verwaltungsaufwand" leisten? ...neben der Programmierung.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.082 Beiträge
 
Delphi 12 Athens
 
#6

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 12. Mär 2024, 11:29
nja, gehen würde es,

z.B.
  • das Hauptverzeichnis und die Struktur als Repo, mit SubModules
  • die ganzen UnitGroup* als eigene Repo
  • die ganzen Programm* als eigene Repo
  • die vielen common als eigene Repo oder vielleicht auch direkt im Haupt-\ÜberRepo
  • vielleicht auch alle CommonUnits und Projectgroup* bzw. ProjectgroupUniversal in einem Zwischen-Repo, als Struktur
  • oder CommonUnits als ganzes SubModul, mit allen UnitGroup* (diese nicht mehr einzeln)
  • oder nur die einzelnen Unterverzeichnissse / Teil-Repos und die Verzeichnisstruktur darüber manuell)
  • oder gar die Grundstruktur bissl neu aufteilen / umorganisieren
    also mit oder ohne einem Master-Reop und die einzlnen Teilrepos in einer flacheren Struktur alle nebeneinander
  • ...



Man kann sogar wirklich alles in ein Repo und das dennoch getrennt machen, wenn man masochistisch genug veranlagt ist.
  • also wie oben auftrennen, aber nicht als mehrere Repos, sondern als "eigentständige" Branches nebeneinander in ein/mehrere Repo
    git checkout --orphan BRANCHNAME
  • dann sind alle History voneinander getennt
  • und das dann aber als unabhängige Work-Tree in den oben erwähnten Strukturen vom selben .git-Verzeichnis auschecken


Ach ja, es gibt zumindestens viele Anleitungen/Converter/Tools, welche die HG-Historie nach GIT importieren können,
damit du die alte Geschichte beim Umzug nicht verlierst.
Vermutlich geht es ähnlich wie von SVN aus, wo man auch einzelne Verzeichnisse und nur jeweils ihre Historie übernehmen kann,
mit oder ohne alte Branches. (bei SVN waren Branches ja meistens danebenliegende Unterverzeichnisse)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Mär 2024 um 11:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#7

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 12. Mär 2024, 12:37
Zitat:
Wie gesagt, ich überlege mir jetzt ob ich wieder ein großes Repository mache
...schlechte Idee.
Begründung:
Alle Commits ALLER Projekte in einem "Graph" ist unübersichtlich. Ich hab immer "develop" und "release" Zweige pro Projekt. (Bilder) Stelle dir vor, daß noch Commits dazwischen liegen. Was gehört wozu? "Master" wäre bei einem großen Repro für alle da...
Das unübersichtliche hat mich auch gestört. Deshalb die Idee, statt einem großen Repository ein kleines zu machen.

Der Vorteil am großen Repository war aber, dass ich immer sofort gesehen habe, was ich an einem bestimmten Tag unabhängig vom Projekt gemacht habe.

Zitat:
war der ganze Code nur Lokal auf meinem Rechner...
Ich habe mir nun zum Test im lokalen Netz einen GitLab-Server eingerichtet...
...noch schlechtere Idee. Besser Außer Haus...Bitbucket, GitHub etc. Lokal nur mit entsprechender Backup Strategie.
Die Backupstrategie "außer Haus" ist da. Die Musst du aber auch bei einem Service außer Haus haben. Will nicht den Teufel an die Wand malen, aber auch bei Amazon und Co. sind Daten verloren gegangen.


Zitat:
Irgendwie ist die Nutzung aber eingeschlafen.
Ich könnte mir nicht mehr vorstellen ohne ein Versionskontrollsystem zu arbeiten. Ständig springen zwischen Zweigen, zurücksetzen, vergleichen...und das ohne? Nö.

Deshalb will ich ja wieder ein Versionskontrollsystem einführen.

Bei mir ist die Nutzung eingeschlafen, weil ich meine Verzeichnisstruktur und Unitnamen über die letzten fünf Jahre reorganisiert habe. Ich habe seit 30 Jahren meine 10 festen Projekte. Wer kennt nicht die Sauereien, die man in 30 Jahren so gemacht hat. Das war alles so gewachsen, dass es extrem gestört hat. Früher habe ich innerhalb eines Projektes viele Unterverzeichnisse für die jeweiligen Programmteile gehabt. Also z.B. Benutzer, Kunden, Statistik, Serienbrief, Lager und viel mehr. Da gab es pro Projekt teilweise 50-80 Unterverzeichnisse. Dann habe ich irgenwann Namespaces für die Units eingeführt und alle Units mit der Zeit in "ein" Projektverzeichnis verschoben. Das ist für mich viel eleganter und lesbarer.

Das alles hatte aber den Nachteil, das Hg ins schleudern gekommen ist. Dateien umbenennen UND Verschieben mochte es nicht so. (Kann auch sein, dass ich falsch bedient haben) deshalb habe ich irgenwann das ganze Repository entfernt, weil es mehr gestört hat, als genutzt.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.082 Beiträge
 
Delphi 12 Athens
 
#8

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 12. Mär 2024, 15:59
Backup: Ich lass mir einfach automatisiert einen Clone vom Github auf mein NAS ziehen.

Der Vorteil am großen Repository war aber, dass ich immer sofort gesehen habe, was ich an einem bestimmten Tag unabhängig vom Projekt gemacht habe.
OK, du könntest z.B. im GitHub auch global über alle Repos dir auflisten lassen was wo los war.

Genauso kann man auch mehrere unabhängige "Branches" (Projekte) in einem Repo haben,

oder auch mehrere Repos als Remote-Quellen in "ein" lokales Repo Verzeichnis auschecken clonen.
Hier habe ich z.B. einen Fork im GitHub und als zweite Source im lokalen Repo noch das Original mit drin.
git remote add original git@github.com:xxxx/yyyyy.git (OK, "original" ist vielleicht nicht der beste Name, als unverwechselbaren Vergleich zum "origin")

Dann hast du lokal in deinem Git-Log auch die Historie gemeinsam ("alle" Branches anzeigen, anstatt nur das Aktuelle)



https://github.com/geheimniswelten/DECMath-Legacy
der "Original"-Branch ist so ein unabhängiger "Orphan", dessen Historie nicht von einem gemeinsamen Parent ausgeht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Mär 2024 um 17:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.082 Beiträge
 
Delphi 12 Athens
 
#9

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 12. Mär 2024, 16:19
PS: Wer z.B. von SVN/HG zu Git migriert, kann natürlich auch so einen Mist bauen, wie Emba.
Je Delphi-Version ein neues Repo, anstatt das als Commit/Branch/Tag/sonstwas in einem Repo zu verwalten.
https://github.com/Embarcadero/RADStudio12Demos

Mit dem geilen "Vorteil", dass man nicht sieht, was der Unterschied zur Vorgängerversion ist,
aber auch nicht den alten Mist mit ins neue Delphi mitschleppt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Mär 2024 um 17:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.295 Beiträge
 
Delphi 12 Athens
 
#10

AW: Versionskontrollsystem einrichten (GIT) - Ideen

  Alt 12. Mär 2024, 16:24
Danke himitsu,

sehr interessante Gedankengänge.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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