Version Control

Als Entwickler und Objektdesigner erstellen und verwalten Sie mehrere Versionen eines Objekts, exportieren und importieren diese Versionen in ein 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 Repositorys über mehrere Knoten eines Systems hinweg synchronisieren, um auf Ihre Daten zuzugreifen und gleichzeitig eine kollaborative Arbeitsumgebung für alle Entwickler und Objektdesigner sicherzustellen.

Diese Seite beinhaltet Folgendes:

Übersicht

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 einen bestimmten Knoten gebunden und daher von jedem Knoten in Ihrem System aus zugänglich.

Sie können auf die Version Control-Funktionalität 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 Ihrer Änderungen in das Remote-Repository
  • Zusammenführen von Änderungen, die in anderen Zweigen vorgenommen wurden, in Ihrem Mandanten
  • Durchführung eines Rollbacks zu einer früheren Version Ihres Mandanten
  • Erstellen Sie einen neuen Zweig aus einem bestehenden Zweig
  • Änderungen, die in Ihrem Zweig vorgenommen wurden, aus einem anderen Mandanten abrufen

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. Weitere Informationen finden Sie auf der Seite "Berechtigungen", Automation Engine-Berechtigungen gewähren und Berechtigungen Automation Enginegewähren.

  • Sie können bestimmte Objekte davon ausschließen, in das Remote-Repository geschrieben zu werden. Dazu verwenden Sie die Variable UC_VERSIONCONTROL_EXCLUDE, siehe UC_VERSIONCONTROL_EXCLUDE - Änderungen aus dem Commit ausschließen. 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-Repositorys

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. Die Automation Engine akzeptiert nur RSA-, DSA- und ECDSA-Schlüssel. Schlüsseldateien müssen mit dem Format PKCS #8 gespeichert werden.

Um einen SSH-Schlüssel im Automation Engine-Server zu erstellen und den öffentlichen Schlüssel Ihrem GitHub- oder Bitbucket-Konto hinzuzufügen, gehen Sie wie folgt vor:

  1. Generieren Sie den SSH-Schlüssel. Stellen Sie sicher, dass Sie ein unterstütztes Format verwenden, z. B. RSA.

    $ssh-keygen -m PEM -t rsa -b 4096 -C "ihre_e_mail_adresse@beispiel.com"

  2. Wenn Sie aufgefordert werden, eine Datei einzugeben, in der der Schlüssel gespeichert werden soll, drücken Sie die Eingabetaste.

    Beispiel

    Geben Sie eine Datei ein, in der der Schlüssel gespeichert werden soll (/home/you/.ssh/id_rsa): [Drücken Sie die Eingabetaste]

    Diese Aktion akzeptiert den standardmäßigen Dateispeicherort.

  3. Wenn Sie zur Eingabe einer Passphrase aufgefordert werden, lassen Sie sie leer.

    Wenn Sie den Standardschlüsselnamen und -ordner auswählen, sollte das Ergebnis etwa wie folgt aussehen:

    Hinweis: Stellen Sie sicher, dass known_hosts-Datei einen Eintrag für den GitHub- oder Bitbucket-Server enthält. Andernfalls funktioniert Version Control nicht richtig.

  4. Fügen Sie den Inhalt des öffentlichen Schlüssels (id_rsa.pub) zu den SSH-Schlüsseln in Ihrem GitHub- oder Bitbucket-Konto hinzu. Weitere Informationen finden Sie in der GitHub- oder Bitbucket-Dokumentation.

Als nächstes müssen Sie den Parameter REPOSITORY_SSH_DIR (sichere Verbindung) definieren, um den Pfad der generierten SSH-Schlüssel auf dem Dateisystem der Automation Engine zu spezifizieren. Sie können ihn entweder in der Variablen UC_SYSTEM_SETTINGS im Mandanten 0 oder in der Variablen UC_CLIENT_SETTINGS für den betreffenden Mandanten definieren. Weitere Informationen finden Sie unterUC_SYSTEM_SETTINGS - Systemübergreifende Einstellungen und UC_CLIENT_SETTINGS - Verschiedene Client-Einstellungen.

  • Wenn der Parameter in den Systemeinstellungen (REPOSITORY_SSH_DIR) in Mandant 0 gesetzt wurde, 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 - Verschiedene Client-Einstellungen erlaubt es Ihnen, die SSH-URL des Repositorys zu definieren, die für den Verbindungsaufbau benötigt wird.

Beispiele

  • ssh://git@bitbucket.example.com:7999/example/test_repo.git

  • git@github.com:example/test_repo.git

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 Zweigs 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. Weitere Informationen finden Sie unter Anmeldedaten über LDAP und/oder LDAP Sync authentifizieren.

    • 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, ruft das System den Status des Repositorys ab 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 für ein Commit. Sobald eine Änderung übernommen wurde, wird sie in der Ansicht Commit-Verlauf angezeigt.

Wichtig! Die Eingabe einer Commit-Meldung ist verpflichtend und es wird empfohlen, die Änderungen für das Commit klar zu beschreiben.

Liste der Änderungen ohne Commit

In der Liste Änderungen ohne Commit werden alle neuen, geänderten und gelöschten Objekte angezeigt, die noch nicht in das Remote-Repository übernommen wurden. Sie können eine oder mehrere Änderungen seit dem letzten Commit auswählen. Über die Filter-Funktion können Sie auch die Anzahl der angezeigten Datensätze einschränken und z. B. nur Ihre Änderungen anzeigen. Das System prüft dann, ob Sie über die erforderlichen Rechte verfügen oder nicht.

Die Liste zeigt standardmäßig die folgenden Spalten an:

  • Name

  • Typ

  • Änderung

    Letzte Objektänderung

    Ein Objekt kann neu, entfernt, geändert, umbenannt oder verschoben sein.

  • Zuletzt geändert

    Datum der letzten Objektänderung

  • Geändert von

    Benutzer, der das Objekt geändert hat

  • Archivschlüssel 1 und 2

    Archivschlüsselwörter, wie im jeweiligen Objekt definiert

Klicken Sie auf das Aktualisierungssymbol oben rechts in Ihrer Umgebung, um die aktuelle Ansicht zu aktualisieren.

Filter verwenden

Sie haben die Möglichkeit, die Inhalte der Liste Änderungen ohne Commit über unterschiedliche Filter an Ihre Bedürfnisse anzupassen. Sie können nach dem Namen und/oder dem Typ eines Objekts und einer bestimmten Änderung suchen.

Tipp: Sie können gefilterte Listen mit anderen Benutzern gemeinsam nutzen. Sie können auch ein Lesezeichen für die gefilterte Liste setzen, um später schnell darauf zugreifen zu können. Weitere Informationen finden Sie unter Lesezeichen setzen und Links weitergeben.

Die Filterfunktion verwenden

  1. Wählen Sie Filter, um den Filterbereich zu öffnen.

    Standardmäßig werden die Felder Name und Typ angezeigt.

  2. Wählen Sie Filterkriterien hinzufügen aus, um dem Filterbereich die entsprechende Kategorie hinzuzufügen.

    Sie können die folgenden Kategorien hinzufügen:

    • Änderung, um eine der folgenden Optionen auszuwählen:

      • Neues Objekt

      • Entferntes Objekt

      • Geändertes Objekt

      • Umbenanntes Objekt

      • Verschobenes Objekt

    • Zuletzt geändert, um Objekte auszuwählen, die innerhalb eines bestimmten Zeitraums geändert wurden

    • Geändert von, um Objekte auszuwählen, die von einem bestimmten Benutzer geändert wurden

    • Archivschlüssel 1 und Archivschlüssel 2, um nach einem bestimmten Schlüssel zu suchen

  3. Wählen Sie unten im Filterbereich Filter, um die Filterkriterien anzuwenden, oder Zurücksetzen, um zur Standardeinstellung zurückzukehren (nicht aktiviert).

Hinweise:

  • All diese Aktionen sind optional.
  • Wählen Sie mit einem Klick auf Alle auswählen sämtliche verfügbaren Optionen aus, und wählen Sie Zurücksetzen, um alle Kontrollkästchen zu deaktivieren.

Liste Commit-Verlauf

In der Liste Commit-Verlauf werden die Commit-Meldung, das Datum und die Uhrzeit des Commits sowie der Benutzer, der die Änderungen übernommen hat, angezeigt. Diese Änderungen entsprechen dem aktiven Zweig, der deutlich mit einem grünen Häkchen markiert ist. Sie können auch den Commit-Verlauf anderer Zweige anzeigen, indem Sie den entsprechenden Zweig aus der Dropdown-Liste auswählen.

Die Liste zeigt standardmäßig die folgenden Spalten an:

  • Aktiv

    Zeigt an, ob das Commit Teil des aktiven Zweigs ist

  • Commit-Meldung

  • Erstellungsdatum

    Datum, an dem das Objekt erstellt wurde

  • Erstellt von

    Benutzer, der das Objekt erstellt hat

  • Commit-ID

Klicken Sie auf das Aktualisierungssymbol oben rechts in Ihrer Umgebung, um die aktuelle Ansicht zu aktualisieren.

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 geänderten 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:

  1. Ein Objekt existiert im Remote-Repository, aber nicht in Ihrem Mandanten.

    In diesem Fall wird das Objekt in Ihren Mandanten importiert.

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

  3. 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 ein Commit ausgewählt haben. Nachdem Sie das entsprechende Commit im Commit-Verlauf ausgewählt und Rollback ausgewählt haben, prüft das System, ob es in Ihrem Mandanten Änderungen gibt, die noch nicht festgeschrieben 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-Meldung 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-Zweigs abfragen müssen, um Ihre Arbeit zu testen, müssen Sie den Master-Zweig 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, auf 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.

Verzweigung

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-Verlauf das Commit, das als Grundlage für Ihren neuen Zweig verwendet werden soll, und wählen Sie Neuer Zweig aus dem ausgewählten. Der neue Zweig wird mit den übrigen für Ihren Mandanten verfügbaren Zweigen aufgelistet und hat den Status des ausgewählten Commits.

Abrufen

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 Abrufen ist in der Ansicht Commit-Verlauf des aktiven Zweigs verfügbar. In dieser Ansicht zeigt ein Indikator an, welches Commit auf dem aktiven Zweig dem aktuellen Status Ihres Mandanten entspricht. Wenn Sie Abrufen auswählen, wird das 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 Repositorys haben. Wenn Sie abrufen 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. Weitere Informationen finden Sie unter Objekte importieren/exportieren.

Siehe auch: