Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   SVN und Komponentenversionen (https://www.delphipraxis.net/150240-svn-und-komponentenversionen.html)

haentschman 11. Apr 2010 08:52


SVN und Komponentenversionen
 
Guten Morgen alle... :hi:

ich bräuchte mal eine Idee zur Problemlösung :zwinker:

Viele von Euch arbeiten auch mit Tortoise SVN. Abgeschlossen Versionen (Verzweigungen) legt man ja für gewöhnlich in tags. Soweit so gut. Nun verändern sich ja auch über die Zeit die Komponenten durch Updates (TMS, Zeos etc.)

Wie legt ihr diese Informationen mit ab, damit ein Kompilat einer älteren Version exakt dem Original entspricht ?

Khabarakh 11. Apr 2010 11:21

Re: SVN und Komponentenversionen
 
Zitat:

Zitat von haentschman
Wie legt ihr diese Informationen mit ab, damit ein Kompilat einer älteren Version exakt dem Original entspricht ?

Das heißt, ein Update der Komponenten soll sich nicht auf ältere Versionen auswirken (zumindest, solange sie damit nicht getestet wurden und dafür ein Commit angelegt wurde)? Dann musst du die Komponenten wohl auch unter Revisionskontrolle stellen ;) . Wenn du auf sie über den projektspezifischen Search Path verweist, sollte das kein Problem sein.

haentschman 11. Apr 2010 12:33

Re: SVN und Komponentenversionen
 
Zitat:

Das heißt, ein Update der Komponenten soll sich nicht auf ältere Versionen auswirken
...das hatte ich so im Sinn. Ein Beispiel: bei irgendeinem Update von TMS sind Properties weggefallen. Im laufenden Projektstand ist das nicht wirklich dramatisch. Eine "abgeschlossene" Version wäre aber dann nicht mehr die gleiche.
Zitat:

Dann musst du die Komponenten wohl auch unter Revisionskontrolle stellen
...puhh :roll: Was eine Aktion.
Ich werde es mal etwas vereinfachen. Da der Fall eine ältere Version zu kompilieren alle 100 Jahre mal vorkommt werde ich alle Installationsdateien der relevanten Komponenten in ein Verzeichnis dazu packen und um diese ggf. in die IDE zu installieren.

...oder gibt es noch einfachere Vorschläge ? :wink:

Khabarakh 11. Apr 2010 14:56

Re: SVN und Komponentenversionen
 
Zitat:

Zitat von haentschman
Zitat:

Dann musst du die Komponenten wohl auch unter Revisionskontrolle stellen
...puhh :roll: Was eine Aktion.

...und das normalste der Welt, schau dir ein beliebiges OSS-Projekt an.
/edit: Argh, Delphi kennt immer noch nur global installierte Packages :| ? Das ist natürlich reinstes Gift für VCS.

Uwe Raabe 11. Apr 2010 17:57

Re: SVN und Komponentenversionen
 
Zitat:

Zitat von Khabarakh
Argh, Delphi kennt immer noch nur global installierte Packages :| ? Das ist natürlich reinstes Gift für VCS.

Wie sollte es denn sonst sein? Wenn es projektspezifische Packages gäbe, könnte man eventuell keine zwei Formulare aus unterschiedlichen Projekten gleichzeitig geöffnet haben. Ein Schritt in die richtige Richtung wären allerdings auf Projekt-Gruppen bezogene Packages.

generic 11. Apr 2010 18:28

Re: SVN und Komponentenversionen
 
Die Komponenten werden auch versioniert und geTagged (extra Projekte).
In dein Projekt bindest du die Komponenten mit dem SVN-Property "externals" ein.

haentschman 12. Apr 2010 10:38

Re: SVN und Komponentenversionen
 
Guten Morgen...

könntest du mir das in Stichpunkten mal erklären ?
Zitat:

In dein Projekt bindest du die Komponenten mit dem SVN-Property "externals" ein.
...das hab ich gar nicht verstanden :oops: Wo finde ich diese "externals" ?

Danke

fkerber 12. Apr 2010 12:05

Re: SVN und Komponentenversionen
 
Hi!

Schau mal, ob dir das hilft:
http://wolf-u.li/1306/svnexternals-z...theken-nutzen/


Grüße, Frederic

generic 12. Apr 2010 14:23

Re: SVN und Komponentenversionen
 
SVN-Buch:
http://svnbook.red-bean.com/nightly/de/index.html

Property-Metadaten
http://svnbook.red-bean.com/nightly/...roperties.html

Externals:
http://svnbook.red-bean.com/nightly/...externals.html

Aber fKerbers Beitrag triff es bereits auf den Kopf.

haentschman 12. Apr 2010 19:02

Re: SVN und Komponentenversionen
 
Danke für eure Info´s

...leider bringen sie mich nur halb zum Ziel. Das mit den externals hab ich soweit. Nur wie wende ich das auf die bpl und Sourcen der Fremdkomponenten an ? Die liegen ja völlig wo anders und wenn ich das richtig verstehe, hab ich dann nur eine "Kopie" in der Arbeitskopie.
Wo müßten die Komponenten aktualisiert werden ? In der Quelle oder in der Arbeitskopie ?

Denke ich nur zu kompliziert ? :gruebel:

generic 19. Apr 2010 12:44

Re: SVN und Komponentenversionen
 
Sprichst du von den installierten Komponenten innerhalb von Delphi oder eigenen BPLs?
Im Prinzip darfst du nicht mit globalen Suchpfaden arbeiten, sondern die in das Projekt eintragen.

Bei in der IDE installierten Komponenten dürfte das schwieriger werden.

ele 19. Apr 2010 13:28

Re: SVN und Komponentenversionen
 
Zitat:

Zitat von generic
Sprichst du von den installierten Komponenten innerhalb von Delphi oder eigenen BPLs?
Im Prinzip darfst du nicht mit globalen Suchpfaden arbeiten, sondern die in das Projekt eintragen.

Bei in der IDE installierten Komponenten dürfte das schwieriger werden.

Das führt aber ziemlich schnell zu eine Source-Chaos, wenn man dann bei mehreren Projekten eine eigene Bibliothek mitführt. Vor allem wenn man dann eine Bibliothek in einem Projekt weiterentwickel und das in den anderen Projekten nicht nachführt. Ich arbeite deswegen ausschliesslich mit globalen Bibliothekspfaden.

Ich habe mir auch schon Gedanken zu dem Problem gemacht, aber eine wirklich zufriedenstellende Lösung habe ich bisher auch noch nicht gefunden.

Namenloser 19. Apr 2010 17:11

Re: SVN und Komponentenversionen
 
Ein Symlink könnte hier hilfreich sein: Einfach ein globales Lib-Verzeichnis erstellen und dann in jedem Projektordner eine Veknüpfung dorthin erstellen.

Uwe Raabe 20. Apr 2010 07:29

Re: SVN und Komponentenversionen
 
Zitat:

Zitat von ele
Das führt aber ziemlich schnell zu eine Source-Chaos, wenn man dann bei mehreren Projekten eine eigene Bibliothek mitführt. Vor allem wenn man dann eine Bibliothek in einem Projekt weiterentwickel und das in den anderen Projekten nicht nachführt. Ich arbeite deswegen ausschliesslich mit globalen Bibliothekspfaden.

Ein Problem ensteht in diesem Fall dann, wenn du eine ältere Version zur Fehlerbehebung bearbeiten musst, die aber nicht mit der neuen Version der Bibliothek zusammen passt. Deswegen gehören meiner Meinung nach die Bibliotheken mit in die Versionsverwaltung des Projekts.

Ich löse das mit SVN folgendermaßen:

- Alle Bibliotheken werden über SVN verwaltet. Ich habe ein eigenes Repository, einen Folder pro Bibliothek und die entsprechenden Subfolder trunk, tags und branches. Sowohl bei Fremd-Bibliotheken, als auch bei eigenen, wird jede Version getaggt.

- Jedes Projekt hat ein eigenes LIB-Verzeichnis in das die verwendeten Bibliotheken per svn:external eingebunden werden. Solange das Projekt in der aktuellen Entwicklung bzw. Experimentierphase ist, binde ich den jeweiligen trunk ein.

- Noch bevor die ersten Versionen des Projekts rausgehen (sprich, bevor das erste Projekt selbst getagged wird), ändere ich die svn:externals auf den aktuellen Tag der entsprechenden Bibliothek. Damit ist gewährleistet, daß diese Version des Projekts mit den dafür passenden Bibliotheken fest verbunden ist.

- Für die aktuelle Entwicklung werden die svn:externals wieder auf den trunk zurückgesetzt. Damit ist sichergestellt, daß das Projekt immer mit den neuesten Bibliotheken arbeitet. In Ausnahmefällen wird für einzelne Bibliotheken auch mal darauf verzichtet.

- Zum Bugfixing wird die zu fixende Version aus den tags in einen neuen Branch kopiert. Dieser wird dann für alle weiteren Bugfixes dieser Version verwendet. Auf ein Merge wird auf Grund der bekannten Probleme von SVN in diesem Bereich verzichtet.

- Das Ganze läßt sich dank einer strukturierten Versionsnummernrichtlinie relativ leicht automatisieren.

Das Problem der Designtime-Packages läßt sich damit leider nicht lösen und ich habe bislang auch noch keine zufriedenstellende Lösung dafür gefunden. Entsprechende Geistesblitze nehme ich immer dankbar zur Kenntnis.

Nach meinen bisherigen Erkenntnissen muss man sich aber für eine Lösung von den automatischen Bibliotheksinstallern gleich verabschieden.

Oder nach Walter Giller: Es bleibt schwierig...

Die Muhkuh 20. Apr 2010 08:44

Re: SVN und Komponentenversionen
 
Hi,

leg doch einfach ein Verzeichnis "vendor" im Projekt an und werfe dort die Komponenten mit rein?

http://svnbook.red-bean.com/nightly/....vendorbr.html

haentschman 20. Apr 2010 18:46

Re: SVN und Komponentenversionen
 
Danke für Eure Anteilnahme... :zwinker:

ich habe im Moment andere Sorgen. Ich hab mir mit der Probiererei ein paar Versionstände abgeschossen. Verkehrt Ausgecheckt ! :( Ok...Backup her. Und dann ein beschädigtes Backup vorgefunden :wall: (Acronis True Image) Ich bin fast geplatzt :evil:

Wenn der Kopf wieder dafür frei ist nehme ich mir Eure Tipps zur Brust. Dann kommt bestimmt die eine oder andere Sicherheitsfrage damit das nicht wieder passiert :zwinker:

Eine schöne Woche...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr.

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