Version Control
Als Entwickler und Objektdesigner erstellen und verwalten Sie mehrere Versionen eines Objekts, exportieren und importieren diese Versionen in und aus einem Remote-Repository, nehmen Änderungen an einer früheren Version zurück und haben Zugriff auf die Commit-Historie des Mandanten. Sie können Repositories über mehrere Knoten eines Systems hinweg synchronisieren, um auf Ihre Daten zuzugreifen und gleichzeitig eine kollaborative Arbeitsumgebung für alle Entwickler und Objektdesigner sicherzustellen.
Dieses Thema beinhaltet Folgendes:
Überblick
Mit einem Remote-Repository und Version Control können Sie verschiedene Versionen Ihres Mandanten sichern und ordnungsgemäß speichern und diese jederzeit wiederherstellen. Außerdem können Sie selbstständig und gemeinsam in einem Team in einem Setup mit mehreren Umgebungen arbeiten. Die in einem Remote-Repository gespeicherten Daten sind nicht an ein bestimmtes Element gebunden und daher von jedem Element in Ihrem System aus zugänglich.
Sie können auf die Funktionalität Version Control von der Process Assembly aus zugreifen. Um sie verwenden zu können, müssen Sie ein Remote-Repository einrichten, es mit Ihrem System verbinden und Ihren Mandanten initialisieren. Nachdem Ihr Mandant initialisiert wurde, können Sie die folgenden Operationen durchführen:
- Übertragen Sie Ihre Änderungen in das Remote-Repository
- Fügen Sie Änderungen, die in anderen Zweigen vorgenommen wurden, in Ihrem Mandanten zusammen
- Führen Sie ein Rollback zu einer früheren Version Ihres Mandanten durch
- Erstellen Sie einen neuen Zweig aus einem bestehenden Zweig
- Ziehen Sie Änderungen, die in Ihrem Zweig vorgenommen wurden, aus einem anderen Mandanten.
Wichtig!
-
Wenn es mindestens ein Objekt gibt, für das Sie keine Schreibrechte (W) haben, wird die Operation, die Sie durchführen wollen, abgebrochen und eine Fehlermeldung ausgegeben. In diesem Fall können Sie Ihre Änderungen auswählen und mit diesen fortfahren. Wenn Sie Hilfe zu Ihren Berechtigungen und Privilegien benötigen, wenden Sie sich an Ihren Systemadministrator.
-
Sie können das Schreiben bestimmter Objekte in das Remote-Repository verhindern, indem Sie das Variablenobjekt (VARA) UC_VERSIONCONTROL_EXCLUDE - Änderungen vom Commit ausschließen verwenden. Das Ausschließen von Objekten ist sinnvoll, wenn Sie bestimmte Konfigurationen nicht überschreiben wollen oder wenn Sie Ihr Export- oder Importvolumen reduzieren wollen.
Einrichten eines Remote-Repository
Bevor Sie beginnen, mit Version Control zu arbeiten, müssen Sie ein Git-Repository einrichten. Dies kann entweder manuell oder über Dienste wie GitHub oder Bitbucket erfolgen. Um die Kommunikation zwischen der Automation Engine und dem Repository mit einem SSH-Key zu ermöglichen, müssen Sie zunächst die notwendigen SSH-Keys generieren.
Als nächstes müssen Sie den Parameter REPOSITORY_SSH_DIR (sichere Verbindung) definieren, um den Pfad der generierten SSH-Keys auf dem Dateisystem der Automation Engine zu spezifizieren. Sie können ihn entweder im Parameter UC_SYSTEM_SETTINGS - Systemweite Einstellungen im Mandanten 0 oder im Parameter UC_CLIENT_SETTINGS - Diverse Mandanten-Einstellungen für den jeweiligen Mandanten definieren.
-
Wenn der Parameter die Systemeinstellungen (REPOSITORY_SSH_DIR) im Mandanten 0 festgelegt hat, verwenden alle Mandanten im System das SSH-Verzeichnis, das Sie bei der Verbindung zu einem Remote-Repository verwenden möchten.
-
Wenn der Parameter in den Mandanten-Einstellungen (REPOSITORY_SSH_DIR) in einem bestimmten Mandanten festgelegt ist, übersteuert er die Definition in den Systemeinstellungen und dieser Mandant verwendet das SSH-Verzeichnis, das Sie hier definieren.
-
Wenn kein Parameter definiert ist, verwendet das System das Standard-SSH-Verzeichnis des Benutzers, mit dem die Automation Engine auf dem Dateisystem des Betriebssystems gestartet wird.
Um die Versionskontrolle zu aktivieren, müssen Sie eine Verbindung zwischen Ihrem Mandanten und dem Remote-Repository herstellen. Der Parameter REMOTE_REPOSITORY_URL in den UC_CLIENT_SETTINGS - Diverse Mandanten-Einstellungen erlaubt es Ihnen, die SSH-URL des Repository zu definieren, die für den Verbindungsaufbau benötigt wird.
Initialisierung Ihres Mandanten
Wenn Sie Ihren Mandanten initialisieren, können Sie mit der Funktionalität Version Control arbeiten. Dadurch wird der Inhalt Ihres Mandanten mit dem Inhalt eines bestimmten Zweiges in Ihrem Remote-Repository synchronisiert.
Um Ihren Mandanten zu initialisieren, wählen Sie eine der folgenden Optionen:
-
Erstellen Sie einen neuen Zweig.
In diesem Fall exportieren Sie den Inhalt Ihres Mandanten in einen neuen Zweig im Remote-Repository. Alle Objekte werden als separate Dateien gespeichert.
-
Wählen Sie einen Zweig aus, der bereits in Ihrem Remote-Repository verfügbar ist.
Wichtig! Wenn Sie einen Zweig auswählen, der bereits für die Initialisierung zur Verfügung steht,
-
wird der Inhalt Ihres Mandanten durch den Inhalt des von Ihnen ausgewählten Zweiges ersetzt, einschließlich aller Benutzer. Die Benutzer, die in den Zweig exportiert wurden, bleiben im initialisierten Mandanten, sind aber gesperrt. Sie müssen in Mandant 0 entsperrt und es muss ein neues Passwort gesetzt werden.
Dieses Verhalten gilt nur bei Verwendung der AE-Authentifizierung. Bei Verwendung der LDAP-Authentifizierung sind die Benutzer nicht gesperrt.
-
muss der Mandant gestoppt werden, sonst erhalten Sie eine Fehlermeldung.
-
Änderungen committen
Wenn Sie Änderungen in das Remote-Repository committen, können Sie neue, modifizierte oder gelöschte Objekte als neue Version Ihres Mandanten hinzufügen. Um Konflikte zu vermeiden und Ihren Mandanten und das Remote-Repository synchron zu halten, holt das System den Status des Repository und vergleicht ihn mit dem Status Ihres Mandanten. Das System hebt dann die Objekte hervor, die seit dem letzten Commit von einem der Benutzer in Ihrem Mandanten geändert wurden.
Diese Änderungen werden in der Ansicht Uncommittete Änderungen aufgelistet und sind bereit zum Bestätigen. Sie können eine oder mehrere Änderungen seit dem letzten Commit auswählen. Über die Schaltfläche Filter in der Symbolleiste können Sie auch die Anzahl der angezeigten Records einschränken und z. B. nur Ihre Änderungen anzeigen. Das System prüft dann, ob Sie über die erforderlichen Rechte verfügen oder nicht.
Wichtig! Die Eingabe einer Commit-Nachricht ist verpflichtend und es wird empfohlen, die Änderungen für den Commit klar zu beschreiben.
Sobald eine Änderung bestätigt wurde, wird sie in der Commit-Historie angezeigt, die die Commit-Nachricht, das Datum und die Uhrzeit des Commits und den Benutzer, der die Änderungen vorgenommen hat, anzeigt. Diese Änderungen entsprechen dem aktiven Zweig, der deutlich mit einem grünen Häkchen markiert ist. Sie können auch die Commit-Historie anderer Zweige sehen, indem Sie den entsprechenden Zweig aus der Dropdown-Liste auswählen.
In der Ansicht „Commit-Historie„ können Sie Ihren Mandanten auf eine frühere Version zurücksetzen, andere Zweige in Ihren Mandanten einbinden, einen neuen Zweig aus einem bestimmten Commit erstellen oder Änderungen in Ihrem aktuellen Zweig aus einem Remote-Repository in Ihren Mandanten ziehen.
Zurücksetzen auf eine frühere Version
Das Zurücksetzen auf eine frühere Version ist nur für den gerade aktiven Zweig möglich.
Wichtig! Beachten Sie, dass der gesamte Inhalt des Mandanten aus dem Remote-Repository wiederhergestellt wird. Dies gilt auch dann, wenn das System nach der Initialisierung die Status von Repository und Mandant vergleicht und nur die modifizierten Objekte hervorhebt. Daher ist es wichtig zu verstehen, was mit den Objekten passiert, wenn man zu einer früheren Version zurückkehrt. Es gibt drei mögliche Szenarien:
-
Ein Objekt existiert im Remote-Repository, aber nicht in Ihrem Mandanten.
In diesem Fall wird das Objekt in Ihren Mandanten importiert.
-
Ein Objekt ist sowohl im Remote-Repository als auch in Ihrem Mandanten vorhanden.
In diesem Fall wird das Objekt mit der Version aus dem Remote-Repository überschrieben.
-
Ein Objekt existiert in Ihrem Mandanten, aber nicht im Remote-Repository.
In diesem Fall wird das Objekt in Ihrem Mandanten gelöscht.
Die Schaltfläche Rollback ist nur dann verfügbar, wenn Sie sich im aktiven Zweig befinden oder wenn Sie einen Commit ausgewählt haben. Nachdem Sie den entsprechenden Commit in der Commit-Historie ausgewählt und auf Rollback geklickt haben, prüft das System, ob es in Ihrem Mandanten Änderungen gibt, die noch nicht committet wurden. Wenn ja, erhalten Sie eine Warnung, dass alle Änderungen seit dem letzten Commit verloren gehen, wenn Sie mit dem Rollback fortfahren.
Nach erfolgreichem Rollback wird die neue Commit-Nachricht als Rollback markiert und enthält die Commit-ID. Diese ID hilft, das Rollback eindeutig zu identifizieren, da die Commit-Nachricht nicht eindeutig sein muss.
Zweige zu Ihrem Mandanten zusammenführen
Das Zusammenführen ermöglicht es Ihnen, Änderungen, die an andere Zweige committet werden, in den aktuellen Mandanten einzubinden.
Wichtig! Die Zusammenführung kann nur aus dem Zielzweig heraus eingeleitet werden.
Wenn Sie beispielsweise in einem Entwicklungszweig arbeiten und den aktuellen Status des Master-Zweiges abfragen müssen, um Ihre Arbeit zu testen, müssen Sie den Masterzweig in Ihren (aktiven) Entwicklungszweig einbinden. Wenn Sie nach dem Testen Ihre Arbeit in den Master-Zweig einbinden wollen, müssen Sie dies von dem Mandanten aus tun, der mit dem Master-Zweig verbunden ist.
Wenn Sie Inhalte zusammenführen, können einige Objekte Konflikte aufweisen, die Sie überprüfen müssen, bevor Sie sie in Ihren Mandanten importieren. In diesem Fall wird die Operation angehalten, bis die Konflikte gelöst sind. Sie können die Ansicht Vergleichen aufrufen und die Konflikte einzeln durchgehen, um die bestmögliche Lösung des Konflikts zu gewährleisten.
Wichtig: Die Originalversion ist immer diejenige des Mandanten, an dem Sie gerade arbeiten.
Im Dialog Vergleichen werden alle Konflikte nebeneinander dargestellt. Der linke Bereich zeigt die XML-Daten des ursprünglichen Objekts und der rechte Bereich die XML-Daten des Objekts, wie sie im Repository dargestellt werden. Im Eingabefeld oben rechts können Sie festlegen, wie viele Zeilen oberhalb und unterhalb des Konflikts angezeigt werden sollen. Diese Option ist besonders bei großen XML-Dateien hilfreich.
Sie können eine von drei Optionen wählen:
-
Original behalten: Diese Aktion behält die ursprüngliche Objektversion in Ihrem Mandanten und verwirft die Version aus dem Repository.
-
Original überschreiben: Diese Aktion überschreibt die ursprüngliche Objektversion in Ihrem Mandanten mit der Version aus dem Repository.
-
Beide behalten: Diese Aktion behält die ursprüngliche Objektversion in Ihrem Mandanten und fügt auch die Version aus dem Repository separat hinzu, wobei ein Suffix hinzugefügt wird, um beide Versionen zu unterscheiden.
Das Behalten des Originals, das Überschreiben des Originals oder das Behalten beider Versionen führt automatisch zu einer neuen Version des Objekts, die bestätigt werden muss, um Inkonsistenzen im System zu vermeiden.
Als Administrator möchten Sie neue Mandanten basierend auf Versionen anderer Mandanten einrichten, damit Entwickler in einer bestimmten Umgebung arbeiten können. Sie erhalten eine solche Umgebung, indem Sie einen neuen Zweig aus einem bestimmten Commit erstellen.
Wichtig! Aus Sicherheitsgründen werden Passwörter und andere verschlüsselte Felder nicht in das Repository exportiert. Wenn Sie einen neuen Zweig erstellen und Ihren Mandanten von einem anderen Zweig aus initialisieren, müssen die Anmeldeinformationen des Mandanten (z. B. Login, Verbindung, Benutzerobjekte) neu eingerichtet werden. Außerdem werden Benutzerobjekte nach dem Import in einen anderen Mandanten gesperrt und müssen vom Systemadministrator entsperrt werden.
Wählen Sie in der Ansicht Commit-Historie den Commit, der als Grundlage für Ihren neuen Zweig verwendet werden soll, und klicken Sie auf New Branch from Selected. Der neue Zweig wird mit den übrigen für Ihren Mandanten verfügbaren Zweigen aufgelistet und hat den Status des ausgewählten Commits.
Da mehrere Mandanten denselben Zweig verwenden können, müssen Sie möglicherweise einige Änderungen, die für den aktiven Zweig festgelegt sind, in Ihren Mandanten einbauen, um sicherzustellen, dass Ihre Inhalte aktuell und mit dem Repository synchronisiert sind.
Die Schaltfläche Ziehen ist in der Ansicht Commit-Historie des aktiven Zweiges verfügbar. In dieser Ansicht zeigt ein Indikator an, welcher Commit auf dem aktiven Zweig dem aktuellen Status Ihres Mandanten entspricht. Wenn Sie ziehen, wird der letzte Commit in Ihren Mandanten importiert und der Indikator entsprechend gesetzt.
Wichtig! Sie können Änderungen nur dann committen, wenn Sie den gleichen Status des Repository haben. Wenn Sie ziehen und uncommittete Änderungen haben, warnt Sie das System, dass alle uncommitteten Änderungen überschrieben werden. Um Ihre uncommitteten Änderungen beizubehalten, können Sie die Objekte umbenennen oder die normale Exportfunktion verwenden.
Siehe auch: