Szenario: Verteiltes Bearbeiten von FirstSpirit-Objekten
In diesem Szenario arbeiten mehrerer Entwickler verteilt an einem Projekt:
Entwicklung innerhalb der lokalen Entwicklungsumgebung
Die Entwicklung erfolgt in der lokalen Entwicklungsumgebung jedes Entwicklers. Jeder Entwickler verwendet dazu einen eigenen, lokalen FirstSpirit-Server und ein eigenes, lokales FirstSpirit-Projekt („FirstSpirit Development Project“). Von dort aus wird der jeweilige Entwicklungsstand über External Synchronization in das lokale Dateisystem exportiert.
Der Zugriff erfolgt über die FirstSpirit API. Die entsprechenden Kommandos („fs-cli export“, „fs-cli import“) werden über das Kommandozeilenwerkzeug FSDevTools aufgerufen und intern über die FirstSpirit API ausgeführt.
Die so exportierten FirstSpirit-Objekte (Vorlagen, Medien, Inhalte, ...) werden in einem lesbaren Format (xml, jsp, ...) ins lokale Dateisystem („Local file system“) übertragen. Von dort aus können die Dateien über eine IDE bearbeitet werden.
Versionierung über ein Versionskontrollsystem
Für eine erfolgreiche Collaboration ist es notwendig, dass die (Weiter-)Entwicklung immer auf einem möglichst aktuellen Stand erfolgt, das heißt, die Änderungen eines Entwicklers müssen zeitnah in den Projekten der anderen Entwickler verfügbar gemacht werden. Dazu muss jeder Entwickler regelmäßig den Entwicklungsstand der FirstSpirit-Objekte exportieren, seine lokalen Änderungen veröffentlichen und die Änderungen der anderen Entwickler in seinem lokalen Projekt aktualisieren.
Dazu werden die exportierten Projektinhalten über ein Versionskontrollsystem (hier: Git) versioniert. Dabei greift jede lokale Entwicklungsumgebung auf ihr eigenes, lokales Git-Repository zurück. Neben den lokalen Repositorys existiert ein weiteres zentrales Git-Repository („remote Git repository“). Jeder Entwickler pusht seine lokalen Änderungen ins zentrale Repository. Diese Änderungen können dann von allen beteiligten Entwicklern in das eigene, lokale Repository übernommen und über External Synchronization ins lokale Projekt importiert werden.
Die lokalen Entwicklungsstände können so jederzeit mit dem aktuellen (zentralen) Entwicklungsstand synchronisiert werden.