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...