-

Versionsverwaltung mit einem VCS (Version Control System)

PLCnext Engineer unterstützt die Versionsverwaltung mit zwei VCS-Programmen (VCS, Version Control System): SVN (Apache Subversion) und Git. In beiden Fällen arbeitet PLCnext Engineer als VCS Client. Sowohl SVN als auch Git können auf einem separaten Server installiert werden. Alternativ dazu können Sie auch die Dienste eines externen Hosters nutzen.

Allgemeine Informationen zum Versionskontrollsystem (VCS)

Dieses Thema enthält die folgenden Abschnitte:

Der Zweck eines VCS besteht darin, Dateien/Dokumente zu archivieren und alle daran vorgenommenen Änderungen zu erfassen. In unserem Fall sind dies PLCnext Engineer-Solutions mit allen enthaltenen Daten (Code, Variablen, HMI, Versionsinformationen, Geräteparameter usw.).

Nachdem Sie eine Solution in das Repository (Projektarchiv) eingefügt haben, können Sie neuere Versionen in das Repository übertragen (committen). Das VCS speichert alle Versionen mit einem Zeitstempel und einem Benutzernamen.

Hintergrundinformationen: Zweck und Funktionen eines VCS

Weitere Infos
Weitere Details zu SVN und Git entnehmen Sie bitte der entsprechenden VCS-Dokumentation.

Sicherheitsüberlegungen

Das verwendete VCS sollte vor unberechtigtem Zugriff und damit vor Manipulationen geschützt sein. Dies gilt sowohl für die Kommunikation zwischen den VCS Clients (in unserem Fall PLCnext Engineer) und dem Server, auf dem das Repository gehostet wird, als auch für das Repository selbst.
Die Sicherheitsmaßnahmen sollten Verschlüsselung, Authentifizierung und Autorisierung umfassen. Beispiele:

Weitere Infos
Weitere Details hierzu finden Sie in den Themen "Security in PLCnext Engineer" und "Phoenix Contact Industrial Cyber Security Guide".

Ein Projekt in PLCnext Engineer versionieren

Die Versionsverwaltung in PLCnext Engineer erfolgt ausschließlich über das VERSIONSKONTROLLE-Fenster. Das Fenster befindet sich im Cross-Funktionen-Bereich am unteren Bildschirmrand.

Um ein Projekt unter Versionskontrolle eines VCS zu stellen, gehen Sie wie folgt vor:
  1. Wählen Sie im Fenster VERSIONSKONTROLLE links aus der Dropdownliste 'Versionskontrolle' das zu verwendende VCS aus.
  2. Erstellen Sie bei Bedarf ein neues Repository. Klicken Sie dazu auf die Schaltfläche 'Repository erstellen'. Wählen Sie im folgenden Dialog einen leeren Ordner aus. Sie können hier auch einen VCS Host im Internet anstelle eines lokalen Ordners oder Netzwerkordners angeben.

    Wenn Sie ein vorhandenes Repository verwenden möchten, überspringen Sie diesen Schritt und geben im nächsten Schritt beim Erstellen der Arbeitskopie den Pfad zum bestehenden Repository an.

  3. Erstellen Sie eine Arbeitskopie im Arbeitskopieordner, der unter Versionskontrolle steht.

    Was ist eine Arbeitskopie (Ordner)?

    Klicken Sie im Fenster VERSIONSKONTROLLE auf die Schaltfläche 'Arbeitskopie auschecken'.

    Wählen Sie im folgenden Dialog:

    • Das Repository, in welches das Projekt importiert werden soll.
      Wenn Sie in Schritt 2 ein neues Repository erstellt haben, ist dieses bereits voreingestellt.
      Wenn Sie ein vorhandenes Repository verwenden möchten, klicken Sie auf die '...'-Schaltfläche und geben den gewünschten Pfad ein.
    • Den Arbeitskopieordner, in dem Sie Ihre lokale Kopie des Projekts (im nicht komprimierten Format) speichern möchten.

      Hinweis
      Der Arbeitskopieordner muss leer sein.

    Klicken Sie auf 'OK', um den Arbeitskopieordner mit dem Repository zu verknüpfen.
    Der Ordner enthält jetzt einen unsichtbaren Unterordner (.svn/.git). Dieser darf nicht gelöscht werden.

    Die im Repository gespeicherten Daten werden in den Arbeitskopieordner kopiert. Das bedeutet, wenn das Repository bereits PLCnext Engineer-Solutions oder andere Dateien enthält, werden diese in den Arbeitskopieordner kopiert.

  4. Speichern Sie das Projekt, das Sie unter Versionskontrolle stellen möchten, im Arbeitskopieordner.
    Wählen Sie dazu 'Datei > Projekt speichern unter'. Stellen Sie im Speichern-Dialog den Dateityp *.pcwef ein und wählen Sie den Arbeitskopieordner als Zielpfad.
    Mit diesem Schritt werden die Solution-Dateien in das Repository hinzugefügt.

    Hinweis
    Das Projekt muss im unkomprimierten (flachen) Format gespeichert werden. Es darf nicht im komprimierten Format (*.pcwex) gespeichert werden. Ein Projekt im pcwex-Format kann nicht unter Versionskontrolle gestellt werden.

    Die Solution ist jetzt im Repository versioniert. Das verwendete Repository und der Arbeitskopieordner werden im 'Info'-Tab des VERSIONSKONTROLLE-Fensters angezeigt.

    Beispiel: Versionsinformationen

  5. Nachdem Sie das Projekt im vorigen Schritt in das Repository hinzugefügt haben, müssen Sie die aktuelle Projektversion in das Repository übertragen (committen). Damit wird die aktuelle Version jeder einzelnen Solution-Datei eingecheckt.

    1. Öffnen Sie den Tab 'Anstehende Änderungen' im VERSIONSKONTROLLE-Fenster.
    2. Klicken Sie auf die Schaltfläche 'Commit'.

    Im folgenden Dialog können Sie einen Kommentar zur aktuellen Version eingeben. Dieser wird später im Tab 'Historie' angezeigt.

    Beispiel:

  6. Fahren Sie mit der weiteren Bearbeitung des Projekts fort.

    Nach dem nächsten Speichern des Projekts geschieht Folgendes:

    • PLCnext Engineer vergleicht das Projekt automatisch mit der neuesten Version im Repository. Alle Änderungen im Projekt, die Sie seit dem letzten Committen der Version in das Repository gemacht haben, werden im Tab 'Anstehende Änderungen' angezeigt.

      Der Tab enthält mehrere Schaltflächen zum Committen, Aktualisieren usw. der Daten (siehe unten stehende Beschreibung).

      Beispiel: Tab 'Anstehende Änderungen' (SVN Repository)

    • Der 'Historie'-Tab zeigt, welche Versionen in das Repository übertragen wurden. Für jede Version wird der Benutzer angezeigt, der die Version übertragen hat. Zusätzlich ist der Zeitstempel und Kommentar, falls beim Einchecken eingegeben, sichtbar.

      Wenn Sie einen Eintrag auswählen, zeigt die Spalte 'Logisches Element' die übertragenen Änderungen dieser Version.

      Der Tab enthält mehrere Schaltflächen (siehe unten stehende Beschreibung).

      Beispiel: Tab 'Historie' (SVN Repository)

Befehle in der 'Werkzeuge'-Ansicht

Wenn Sie links im VERSIONSKONTROLLE-Fenster den Eintrag 'Werkzeuge' auswählen, stehen Ihnen rechts die folgenden Befehle zur Verfügung.

SymbolBefehlBeschreibungSVN/Git-Befehl
--Dropdownliste 'Versionskontrolle'Auswahl des zu verwendenden VCS (Version Control System).n/a
Repository erstellenErstellt ein Repository für das ausgewählte VCS. Ein neues Repository kann nur in einem leeren Ordner erstellt werden.

Sie können das Repository in einem lokalen Ordner oder einem Netzwerkordner erstellen.
n/a
Arbeitskopie auscheckenErstellt eine Arbeitskopie durch Auschecken der Daten aus dem Repository. Nach Auswählen des Befehls erscheint ein Dialog. Hier wählen Sie das Repository aus und geben einen leeren Ordner für die Arbeitskopie an.SVN: Checkout
Git: Checkout

Befehle in den Tabs 'Anstehende Änderungen' und 'Historie'

Wenn Sie links im VERSIONSKONTROLLE-Fenster einen Arbeitskopieordner (Repository) auswählen, sehen Sie rechts die Tabs 'Anstehende Änderungen', 'Historie' und 'Info'.

Welche Schaltflächen in den Tabs 'Anstehende Änderungen' und 'Historie' zur Verfügung stehen, hängt vom verwendeten VCS ab.

Tab 'Anstehende Änderungen'

Die Liste der anstehenden Änderungen wird ca. 2 Sekunden nach dem Speichern des Projekts aktualisiert. Nicht gespeicherte Änderungen werden hier nicht angezeigt. Änderungen am Projekt können auch nach Ausführen von VCS-spezifischen Befehlen wie z.B. 'Update'/'Pull' oder 'Rückgängig machen'/'Auf Revision zurücksetzen' vorgenommen werden.

SymbolBefehlBeschreibungSVN/Git-Befehl
Neu ladenLädt die Liste der anstehenden Änderungen (Pending Changes) neu und gibt die Anzahl der sichtbaren Listeneinträge vor.SVN: Neu laden (in Repository-Browser)
Git: n/a
CommitÜberträgt die in der Arbeitskopie vorgenommenen Änderungen in das Repository (Checkin)

Stellen Sie sicher, dass Ihre Arbeitskopie aktuell ist (in SVN mit dem Befehl 'Aktualisieren' oder in Git mit dem 'Pull'-Befehl), bevor Sie den Commit-Befehl ausführen.

Beachten Sie, dass in Git die Revision in das lokale Repository übertragen wird und anschließend in das öffentliche Repository mit dem Befehl 'Push' (siehe unten) hochgeladen werden muss.
SVN: Commit
Git: Commit
PushLädt die Daten vom lokalen Git-Repository in das öffentliche Repository hoch.
Die Daten müssen hochgeladen werden, um mehrere lokale Repositories mit dem öffentlichen Repository zu synchronisieren und so die lokalen Änderungen der einzelnen Benutzer zusammenzuführen.
Anschließend können andere Benutzer die Änderungen in ihr lokales Repository herunterladen (siehe unten beschriebener Befehl 'Pull').
SVN: n/a
Git: Push
AktualisierenAktualisiert Ihre lokale Arbeitskopie mit den Änderungen, die andere Benutzer in das Repository übertragen haben.

Der Befehl überprüft das Repository auf Änderungen (im Vergleich zu Ihrer Arbeitskopie) und fügt die Änderungen, falls vorhanden, in Ihrer Arbeitskopie ein.

Ihre Änderungen in den betreffenden Dateien werden beibehalten.
Das Repository selbst wird durch den 'Aktualisieren'-Befehl nicht verändert.
SVN: Aktualisieren
Git: n/a
Rückgängig machenMacht alle anstehenden Änderungen im Projekt rückgängig und setzt das Projekt in den Ursprungszustand (Zustand nach dem letzten Commit-Befehl) zurück.SVN: Revert
Git: Revert
PullÜberprüft das öffentliche Repository auf Änderungen (im Vergleich zu Ihrer Arbeitskopie) und aktualisiert Ihr lokales Git-Repository und Ihre Arbeitskopie mit den Änderungen.
Die Aktualisierungen sind notwendig, wenn das öffentliche Repository Änderungen von anderen Benutzern enthält.

Ihre Änderungen in den betreffenden Dateien werden beibehalten.
Das öffentliche Repository selbst wird durch den 'Pull'-Befehl nicht verändert.
SVN: n/a
Git: Pull

Tab 'Historie'

SymbolBefehlBeschreibungSVN/Git-Befehl
Neu ladenLädt die Historienliste neu und gibt die Anzahl der sichtbaren Listeneinträge vor ('Nächste 100' oder 'Alle anzeigen').SVN: Neu laden (in Repository-Browser)
Git: Neu laden in Log-Dialog
Revision exportierenExportiert die in der Historienliste markierte Revision in ein Verzeichnis. Das Projekt wird im *.pcwef-Format exportiert.SVN: Export (im Kontextmenü des Windows Explorers oder Repository-Browsers)
Git: Diese Revision exportieren (in TortoiseGit 'Log'-Fenster)
Auf Revision zurücksetzenSetzt das aktuelle Projekt auf die in der Historienliste markierte Revision zurück.

Nach Ausführen des Befehls besitzt das Projekt in der Regel anstehende Änderungen (Pending Changes). Diese anstehenden Änderungen können im Register 'Anstehende Änderungen' an das Repository übertragen (committet) oder rückgängig gemacht werden (mit Befehl 'Rückgängig machen')
SVN: Auf diese Revision zurücksetzen (in TortoiseSvn 'Log'-Fenster)
Git: 'Master' auf dieses zurücksetzen (in TortoiseGit 'Log'-Fenster)