Ich bin mir sicher, dass dies ein häufiges Problem ist, das andere zuvor gelöst haben, daher rufe ich die kollektive Weisheit anderer Entwickler/Projektmanager da draußen für etwas Hilfe.Wie man ein VCS mit mehreren abhängigen Projekten strukturiert
Ich habe eine Reihe von Projekten bekam:
- Anwendung
- WebApp
- ServerApp
- Dev Utils
- ORM
Alle von den apps/utils abhängen auf dem ORM: Wenn sich das ORM ändert, muss es kompiliert werden und alle Apps müssen dagegen neu kompiliert und dann bereitgestellt werden. Gerade jetzt meine VCS Struktur ist ein bisschen eine Wirrwarr:
- AnwName
- Trunk
- Anwendung
- WebApp
- ServerApp
- Dev Utils (ca. 4 Ordner gerade jetzt, aber wachsend)
- ORM
- Relase
- Projektname (sei es die Anwendung oder WebApp) version.number
- Zweige
- ExperimentName_DevName
- Trunk
Idealerweise hätte ich gerne einen Stammordner pro Anwendung (Application/WebApp/ORM etc.) mit jeweils eigenen Trunk/Branches/Releases etc., um sie logisch und physisch zu trennen. Meine Argumentation ist, dass, weil viel Arbeit auf der Anwendung gemacht wird, und es viel öfter veröffentlicht wird, jeder Veröffentlichungszweig identische Kopien der gleichen utils etc. hat. Das Auschecken des Trunks, um daran zu arbeiten, bedeutet immer, dass alle anderen Projekte kommen für die Fahrt.
Das Trennen würde jedoch bedeuten, bestimmte Projekte aus den Lösungen zu reißen und das Modifizieren von Projekten gleichzeitig zu einem Pain-Jumping zwischen 2-3 IDEs zu machen (besonders bei Änderungen am ORM).
Ich denke darüber nach, weil ich sehr bald ein CI-Gerät zusammensetze (sei bereit für Fragen dazu in einer Woche oder so) und ich versuche einen Weg zu finden, die Releases automatisch zu erstellen/bereitgestellt. Normalerweise wird nur die Anwendung über eine Skriptkopie auf den Server verteilt, auf dem alle Arbeitsstationen beim Start ausgeführt werden. Aber wie bereits erwähnt, sollten alle anderen Anwendungen neu erstellt und implementiert werden, wenn sich das ORM ändert/veröffentlicht.
(Heute brach ich auf unsere Website und 3 Dienstprogramme, weil ich die ORM geändert und entfalten es mit einer aktualisierten Version der Anwendung, aber vergessen, die anderen Anwendungen mit dem neuen ORM für den Wiederaufbau/deploy -. Oops)
Kann Ihre IDE mehrere Projektgruppen gleichzeitig geladen haben? Eclipse zum Beispiel hat Arbeitssätze, die viel dazu beitragen. Wie oft ändert sich jedes der Module? – GreenKiwi
In Bezug auf CI könnten Sie hier nach TeamCity, Electric Could und CruiseControl suchen/suchen, um zu sehen, was andere getan haben. – GreenKiwi
1) Ich habe Visual Studio noch nie zuvor benutzt. Ich kann mehrere Projekte pro Lösung haben (zur Zeit sind Application und ORM 2 Projekte innerhalb derselben Lösung. Ich bin mir jedoch nicht über mehrere Lösungen sicher.) 2) Nach vielen Überlegungen und Nachforschungen habe ich mich entweder für TeamCity oder Hudson für das CI entschieden Server (lehnt sich an den ehemaligen) –