GitLab - Wichtige Informationen

Alle Informationen auf dieser Seite sind auch direkt auf GitLab einsehbar.

Allgemeines zu Git und GitLab

Was ist Git?

Git ist ein weitverbreitetes Versionsverwaltungssystem, das eine effiziente Zusammenarbeit an Softwareprojekten ermöglicht. Ebenso eignet es sich für die Arbeit an wissenschaftlichen Dokumenten und die Verwaltung von Forschungsdaten.

Git zeichnet sich durch seine dezentrale Struktur aus, wodurch mehrere Personen gleichzeitig an verschiedenen Teilen eines Projekts arbeiten können, ohne ständig mit einem zentralen Server verbunden sein zu müssen. Anstatt dass der volle Versionsverlauf der Daten sich nur an einem einzigen Ort befindet, wird in jeder lokalen Arbeitskopie der vollständige Verlauf aller Versionen gespeichert. Git erfasst alle Änderungen in einem sogenannten Repository und ermöglicht es, zwischen verschiedenen Versionen zu wechseln, Änderungen zu verfolgen und diese bei Bedarf zu kombinieren oder rückgängig zu machen.

Was ist GitLab?

GitLab ist eine Webanwendung zur Versionsverwaltung von Softwareprojekten und Forschungsdaten auf Basis von Git. Es unterstützt alle grundlegenden Funktionalitäten von Git zur Erfassung, Speicherung, Verteilung und Kombination von Versionsänderungen und bietet gleichzeitig eine Weboberfläche zur grafischen Interaktion mit den Repositorien. In der dezentralen Struktur von Git ist das GitLab der Universität Rostock ein zentraler Speicherort, der für die Synchronisation zwischen den lokalen Arbeitskopien genutzt werden kann.

Neben der grundlegenden Anwendung zur Codeverwaltung und Versionskontrolle bietet es umfangreiche Tools für eine moderne Softwareentwicklung und grundlegendes Projektmanagement. Dazu gehören projektspezifische Wikis und Ticket-Systeme (Issues), Möglichkeiten zur Qualitätssicherung und Automatisierung durch Continuous Integration und Continuous Delivery (CI/CD), sowie eine integrierte Paket- und Containerverwaltung.

Damit ist es eine ideale Wahl für Arbeitsgruppen, aber auch Einzelpersonen, die ihre Entwicklungs- und Verwaltungsprozesse effizienter, kollaborativer und qualitativ hochwertiger gestalten möchten. Obwohl diese Tools vor allem im Bereich der Softwareentwicklung eingesetzt werden, bieten sie weitreichende Möglichkeiten in verschiedenen Anwendungsszenarien.

Wichtige Begriffe

Git und GitLab sind vielschichtige Werkzeuge mit vielen technischen Konzepten und Begriffen. Als Hilfestellung werden hier einige Begriffe allgemeinverständlich erklärt.

Git-Begriffe

  • Ein Repository ist eine Sammlung von Dateien innerhalb eines Ordners, deren Bearbeitungsverlauf in Schnappschüssen versioniert wird. Mit Git kann man beliebig viele Repositorien verwalten.

  • Ein Commit ist ein Schnappschuss der Daten im Repository.
    Beim Erstellen eines Commits werden die konfigurierte Email-Adresse und der Name des Bearbeitenden, Datum und Uhrzeit sowie eine Beschreibung über die Änderung untrennbar mit den Datei-Inhalten der neuen Version verbunden. Dies ist eine grundlegende Sicherheitsvorkehrung von Git, um die Historie nachvollziehbar zu machen und nachträgliche Änderungen dieses Schnappschusses zu verhindern.

  • Ein Branch ist ein benannter Verlauf von Schnappschüssen, um die Übersichtlichkeit eines Repository zu wahren. Es kann mehrere Branches geben, wobei dies vor allem für erfahrene Anwender:innen zu empfehlen ist. In jedem Fall gibt es einen Standard-Branch, der in der Regel `main` heißt (früher wurde dieser `master` genannt, was man mitunter bei älteren Repositorien noch findet).

  • Mit dem Git-Befehl `clone` kann eine (lokale) Arbeitskopie eines bestehenden Repository erzeugt werden. Beispielsweise lässt sich ein auf dem GitLab der Universität Rostock erzeugtes Repository auf den eigenen PC damit kopieren.

  • Die Git-Befehle `pull` und `push` können Branches von Repositorien auf unterschiedlichen Geräten synchronisieren (wie etwa dem eigenen PC und dem GitLab der Universität Rostock). Sobald zwei Branches synchronisiert wurden, beinhalten beide eine Kopie aller Daten, d.h. den gesamten Verlauf von Schnappschüssen.

Weitere Informationen zu Git

GitLab-Begriffe

  • Ein Projekt in GitLab enthält fast immer ein Git-Repository und bietet viele zusätzliche Funktionen für dessen Verwaltung sowie umfangreiche Tools für eine moderne Softwareentwicklung. Dazu gehört ein projektspezifisches Wiki und Ticket-System (Issues), Möglichkeiten zur Qualitätssicherung durch Continuous Integration und Continuous Delivery (CI/CD), sowie eine integrierte Paket- und Containerverwaltung.
  • Jedes Projekt ist einem Namensraum eines Nutzerkontos oder einer Nutzergruppe zugeordnet. Alle Nutzenden haben jeweils ihren persönlichen Namensraum, beispielsweise für persönliche Projekte. Genauso haben alle Gruppen jeweils ihren Gruppennamensraum für Gruppenprojekte. Lese- und Schreibzugriff für ein Projekt hängen von dessen Namensraum und ihrer Nutzerrolle ab (siehe Projekte und Gruppen > Nutzerrollen in Projekten in den Nutzungshinweisen):
    • In Projekten im persönlichen Namensraum richten sich die Berechtigungen nach der Nutzerrolle innerhalb des Projekts, d.h. Sie müssen mit einer entsprechenden Nutzerrolle im Projekt Mitglied sein.

    • In Gruppenprojekten richten sich die Berechtigungen sowohl nach der Sichtbarkeit der Gruppe als auch nach den Berechtigungseinstellungen im konkreten Projekt, d.h. Gruppenmitglieder haben mit ihrer Rolle auch Zugriff auf die Gruppenprojekte, wohingegen Mitglieder, die nur in ein Projekt der Gruppe eingetragen werden nur auf dieses entsprechend der Nutzerrolle Zugriff haben.

Anwendungsmöglichkeiten

GitLab wird in erster Linie für die Verwaltung von Softwareprojekten eingesetzt. Es ist aber flexibel genug, um Projekte auch in anderen universitären Kontexten zu verwalten.

  • Forschungsprojekte, vor allem wenn sie Softwareaspekte beinhalten. Neben Programmcode können auch Texte, Abbildungen und andere notwendige Dateien verwaltet werden. Selbst zugehörige Forschungsdaten können im selben GitLab Projekt mit abgelegt werden – es sollten aber unbedingt die Informationen zur Speicherung von Daten (siehe unten) beachtet werden, beispielsweise möglichst wenig binäre Datenformate wie Word, Excel oder Powerpoint.
  • Dokumentation über Gerätschaften, Labore, Arbeitsprozesse oder beliebige andere Einrichtungen und Vorgehensweisen. Texte, Bilder und Videos lassen sich mit GitLab Markdown übersichtlich anordnen, sodass alle, die sich für die aktuelle Version der Dokumentation interessieren, nur einen Webbrowser benötigen. Wichtig hierbei ist, dass textbasierte Dokumente genutzt werden, also beispielsweise Markdown anstelle von Word. Anderenfalls kann Git die Versionierung nicht sinnvoll umsetzen. Sie können zusätzlich ein Ticket-System oder ein Wiki verwenden, um andere zu ermutigen, die Dokumentation auf dem neuesten Stand zu halten.
  • In der Lehre, vor allem beim Programmieren, kann GitLab genutzt werden, um Aufgaben oder zu vervollständigende Softwareprojekte zur Verfügung zu stellen sowie die Kollaboration zu üben. Auch für die Nutzung von Jupyter Notebooks, beispielsweise für das Erstellen von interaktiven Vorlesungsdokumenten, kann GitLab eingesetzt werden. Mit etwas mehr Aufwand könnten auch CI/CD Pipelines eingerichtet werden, welche Uploads von Studenten automatisch auf Korrektheit überprüfen.
  • Und vieles mehr, wie Sitzungsprotokolle, Unterrichtsmaterialien, usw. Jedes Projekt, das mehrere Iterationen digitaler Inhalte umfasst, kann von der Verwaltung in GitLab profitieren, insbesondere wenn dabei mehrere Personen zusammenarbeiten. Es ist zu beachten, dass Git am besten mit textbasierten Inhalten funktioniert. Für die Integration binärer Inhalte, beispielsweise auch Word- oder Excel-Daten, sollte je nach Umfang ein anderes System oder Git LFS verwendet werden (siehe Umgang mit Binärdateien und großen Projekten > Git Large File Storage in den Nutzungshinweisen).

GitLab an der Universität Rostock

GitLab Enterprise Edition

GitLab Enterprise Edition ist eine selbst-gehostete Version von GitLab, die es Organisationen ermöglicht, eine private und individuell angepasste Instanz von GitLab auf ihren eigenen Servern einzurichten (on-premise). Damit erhält man eine erhöhte Kontrolle über die Daten und Sicherheit, sowie Möglichkeiten zur Integration in existierende Infrastruktur. Es gibt verschiedene Ausführungen der Enterprise Edition. Eine kostenlose Variante (Free) und zwei lizenzierte Varianten (Premium und Ultimate), welche in ihren Funktionalitäten aufeinander aufbauen. Einen Feature-Vergleich findet man hier. Darüber hinaus gibt es eine Community Edition, deren Funktionsumfang mit der kostenlosen Enterprise Edition identisch ist.

Das IT- und Medienzentrum der Universität Rostock und die Universitätsbibliothek Rostock betreiben einen GitLab-Server Free Enterprise Edition auf der Infrastruktur der Universität Rostock, d.h. sämtliche (Nutzer-)Daten liegen lokal auf universitätsinternen Servern. Dieser läuft komplett unabhängig von der öffentlichen GitLab Cloud-Instanz.

Funktionsumfang

Abgesehen von einigen wenigen Ausnahmen, bietet der GitLab-Server der Universität Rostock alle Funktionen der freien Enterprise Edition von GitLab. Eine ausführliche Übersicht der verfügbaren Funktionalitäten, inklusive weiterführenden Links zur Dokumentation, ist hier zu finden (das Label "Free" ist zu beachten).

Zu den wichtigsten Kernfunktionen gehören unter anderem:

Darüber hinaus sind einige ausgewählte Premium Features verfügbar.

Einige Ausnahmen sind zu beachten:

  • GitLab Pages (das Hosten statistischer Websites über GitLab) werden aktuell nicht unterstützt.

  • Projekt-Imports von Gitea, Bitbucket Server/Cloud, FogBugz und Manifest Dateien sind aktuell aufgrund von Importproblemen deaktiviert.

Wer hat Zugriff auf GitLab?

Das GitLab der Universität Rostock ist generell aus dem gesamten Internet erreichbar. Dies bedeutet, dass alle öffentlichen Projekte und Gruppen weltweit von jeder Person mit einem Internetzugang einsehbar sind. Der Zugriff auf interne und private Projekte bzw. Gruppen ist angemeldeten Nutzern mit den entsprechenden Rollenberechtigungen vorbehalten. Genauere Informationen zu Rollen und zur Sichtbarkeit von Projekten und Gruppen entnehmen Sie den Nutzungshinweisen unter Projekte und Gruppen.

Angehörige der Universität Rostock

Anmelden können sich alle Personen mit einem gültigen zentralen ITMZ Nutzeraccount. Der Zugriff erfolgt über den Single-Sign-On (SSO) der Universität Rostock mit dem persönlichen Nutzungskennzeichen und dazugehörigem Passwort. Eine separate Freischaltung durch das IT- und Medienzentrum ist nicht notwendig.

Externe Nutzeraccounts

Externe Personen können eingeschränkten Zugriff auf GitLab erhalten, wenn begründete Kollaborationszwecke bestehen. Dafür stellt ein Universitätsangehöriger einen formlosen Antrag per E-Mail an den GitLab Support, der die folgenden Informationen enthalten muss:

  • Name des/der Antragsteller:in (wird als Kontaktperson beim externen Nutzeraccount hinterlegt)

  • Daten für den externen Nutzeraccount:
    - Vor- und Nachname
    - E-Mail-Adresse
    - Nutzer-ID  (Accountname der in GitLab angezeigt wird)
    - Laufzeit des Accounts (z.B. Dauer eines gemeinsamen Forschungsprojekts)

  • Kurze Begründung / Kontext für den Antrag

Nach positiver Prüfung des Antrags erhält die externe Person manuell ein zeitlich befristetes Konto, welches im Anschluss für entsprechende Projekte von Ihnen berechtigt werden kann.

Nutzung und Datenschutz

Bitte beachten Sie, dass Sie durch Ihren Login und die Nutzung von GitLab die Nutzungsbedingungen und Datenschutzerklärung akzeptieren.

Speicherung von Daten

GitLab kann für die Versionierung und Verwaltung von Texten, Sourcecode und durch diesen Code zu generierende bzw. zu analysierende Daten verwendet werden. Handelt es sich dabei um binäre Dateien (z.B. Bilder, Videos, Archive, Office-Dateien, usw.), sollte Git LFS (Umgang mit Binärdateien und großen Projekten > Git Large File Storage) konfiguriert werden, um GitLab die effiziente Verwaltung der Daten im Repository zu ermöglichen. Dies muss von Anfang an aktiviert werden, da eine spätere Migration der Dateien unter Git LFS relativ umständlich ist.

Des Weiteren sind folgende Aspekte zu berücksichtigen:

Projekt- und Speicherlimits

Da Git in erster Linie für die Versionierung von Textdateien konzipiert ist, sollten Repositorien relativ klein bleiben (unter 1 GB). Folgende Grenzen sind derzeit im GitLab der Universität Rostock gesetzt:

  • Es dürfen maximal 10 persönliche Projekte angelegt werden. In begründeten Fällen, kann diese Grenze durch einen Administrator erhöht werden. Bitte wenden Sie sich dazu an den GitLab Support vom IT- und Medienzentrum.
  • Für Arbeitsgruppen oder anderweitig logisch zusammenhängende Projekte, z.B. innerhalb eines Forschungsprojektes, wird die Verwendung von GitLab Gruppen (Projekte und Gruppen > Gruppen) empfohlen. Innerhalb einer Gruppe ist die Anzahl der Projekte unbegrenzt.
  • Die maximale Größe eines Repository ist 2 GB (inklusive Git LFS Dateien). Auch diese Grenze kann in Einzelfällen durch einen Admin angepasst werden, sowohl auf Projekt- als auch auf Gruppenebene. Wenden Sie sich hierzu bitte auch an den GitLab Support.
Sicherung (und Wiederherstellung) von Daten

Projekte und Daten in GitLab werden durch ein automatisches Backup-System gesichert. Dieses umfasst halbstündliche Backups der letzten 24 Stunden, sowie tägliche Backups der letzten 2 Wochen. Diese Backups sind aber in erster Linie für Notfälle vorgesehen, in denen das ganze System wiederhergestellt werden muss und dienen nicht dazu einzelne Projekte oder Dateien wiederherzustellen. Seien Sie vorsichtig beim Löschen von Daten und insbesondere beim Löschen von Gruppen oder Projekten!

Falls Sie Dateien in einem Projekt ungewollt gelöscht haben, denken Sie daran, dass sich diese immer noch in der Git-Historie befinden, falls diese Teil eines früheren Commits waren. Commits können stets rückgängig gemacht werden oder Sie können frühere Versionen einer Datei wieder auschecken. Sollten Sie ein Projekt auf GitLab fälschlicherweise gelöscht haben, kann es sein, dass Sie oder ein Kollege noch über eine lokale Kopie des Repository verfügen, um zumindest die Git Daten wiederherstellen zu können. Folgen Sie dazu den Anweisungen in Projekte und Gruppen > Projekte anlegen > Mit der Kommandozeile.

Löschen von Konten und Daten

Nutzerkontos von GitLab können auf verschiedene Weisen aufgelöst werden:

  • Nutzer können jederzeit freiwillig ihr internes GitLab-Konto löschen. Dazu sollte den Schritten Nutzerkonto löschen gefolgt werden.
  • Interne Nutzeraccounts, d.h. solche, die mit einem zentralen ITMZ Nutzeraccount verknüpft sind, werden automatisch zur Löschung vorgesehen, sobald der zugehörige zentrale ITMZ Nutzeraccount deaktiviert wird (beispielsweise bei Exmatrikulation von Studierenden oder dem Auslaufen eines Arbeitsvertrags von Mitarbeitenden). Ab diesem Zeitpunkt wird eine Frist von 60 Tagen gewährt, bevor der Account gelöscht wird.
  • Externe Nutzeraccounts, d.h. solche, die manuell durch einen Admin erstellt wurden, haben ein festes Ablaufdatum, welches bei Erstellung des Accounts hinterlegt wurde. Dieses kann nach Abstimmung mit GitLab Administrator:innen verlängert werden. Mit Erreichen des Ablaufdatums wird der Account gelöscht.
  • Die Zuständigen des IT- und Medienzentrums sowie der Universitätsbibliothek können ein Nutzerkonto löschen, wenn dessen Aktivitäten die Nutzungsbedingungen verletzt.

Mit dem Löschen eines Nutzeraccounts geht auch die Löschung der zugehörigen personenbezogenen Daten einher, inklusive aller Projekte und Git Repositorien im Namensraum des Nutzers, unabhängig davon, ob andere Personen Zugriff auf diese Projekte haben. Jedem Projektinhaber muss bewusst sein, dass durch sein Ausscheiden damit ggf. auch andere Nutzer die entsprechenden Projekte verlieren. Daher sollten vor dem Ausscheiden aus der Universität Rostock Projekte exportiert und ggf. anderen Nutzern übermittelt werden, welche am Projekt weiter arbeiten wollen.

Ebenso werden Gruppen inklusive ihrer Projekte gelöscht, wenn der zu löschende Nutzer alleiniger Inhaber der Gruppe ist. Gibt es mehrere Nutzer mit der Rolle "Owner", bleibt die Gruppe bestehen. In jedem Fall sollten Gruppeninhaber vor ihrem Ausscheiden aus der Universität Rostock also die Inhaberschaft der Gruppe überprüfen und ggf. übertragen.

Nicht gelöscht werden Git-Daten, die durch Zusammenarbeit im Kontext von Projekten anderer Nutzer entstanden sind. Dort werden die mit einem Git Commit verknüpften Informationen, d.h. Name, E-Mail, sowie Datum und Uhrzeit inkl. Änderungen und ihrer Beschreibung, nicht gelöscht, da dies aufgrund der Funktionsweise von Git nicht möglich ist. Im Allgemeinen ist es damit nicht möglich, die genannten Daten aus Projekten anderer Nutzer zu entfernen.

Wartung

Entsprechend der GitLab Release Policy sind monatliche Updates auf die neueste Version geplant, nachdem diese auf dem Testsystem geprüft wurden. In der Zeit eines Updates wird der GitLab Dienst temporär nicht erreichbar sein. Dies betrifft jedoch nur das GitLab selbst und nicht Ihre Arbeitskopie der Git-Repositorien. Die zugehörigen Wartungszeiträume werden eine Woche vorher angekündigt, sowohl auf der GitLab Website in der Kopfzeile, als auch auf den Infoseiten des ITMZ zu GitLab.

Gibt es spontane kritische Sicherheitsupdates oder Fehlerbehebungen, werden diese nach Bedarf, unter Umständen mit nur einer kurzen Vorlaufzeit, eingespielt.