Repository

Repository - Was ist das?

Ein Repository ist ein System bzw. Verzeichnis zur Speicherung von Dateien. Ein Repository bietet über das einfach Speichern von Dateien hinaus Möglichkeiten zur Versionierung und Benutzerkontrolle an. Über ein Repository können also Änderungen an Dateien nachvollzogen und einzelnen Benutzern zugeordnet werden.

Repositories werden hauptsächlich bei Softwareprojekten eingesetzt um den Quellcode zu verwalten. Dazu wird für jeden Programmierer ein Benutzeraccount mit Zugriffsrechten auf das Repository angelegt. Ändert ein Programmierer eine Datei des Quellcodes kann er diese anschließend mit dem Repository synchronisieren. Das Repository speichert die Änderung an der Datei und andere Programmierer können die Datei anschließend Aktualisieren. Die gemachten Änderungen werden in einem Repository archiviert, sodass es möglich ist jede beliebige Version einer Datei wiederherzustellen oder sich die detaillierten Änderungen im Quelltext anzuschauen. Darüber hinaus ist ersichtlich welcher Programmierer welche Änderungen gemacht hat, da er zum Synchonisieren einen Benutzerzugang benutzen muss.

Repositories bieten darüber hinaus eine Zweige (sog. Branches) eines Projektes zu erstellen, welche dann parallel zum Hauptzweig programmiert werden können. Ein Branch ist quasi eine Kopie des original Repository und kann jederzeit wieder in den Hauptbranch eingefügt werden. So lassen sich alternative Entwicklungswege ausprobieren, ohne das Hauptprojekt zu verändern.

NorthernStars Repositories

Für Repositories gibt es mehrere verschiedene Software-Systeme, welche alle ähnlich, im Detail aber doch unterschiedlich sind. Wir verwenden historisch bedingt zwei verschiedene System für öffentliche und nicht-öffentliche Repositories.

GIT von github.com

Wir verwenden zwei verschiedene Repository-System. Auf github.com stellen wir verschiedene GIT-Repositories offen zur Verfügung. Diese Projekte sind alle quelloffen und dürfen für den nicht-gewerblichen Gebrauch kostenlos genutzt, kopiert und verändert werden. Auch ohne einen Benutzerzugang kann man sich eines dieser Repositories herunterladen.

SVN von SAAS-Secure

Für nicht-öffetnliche Projekte wie etwa die eigene Wettberwerbs-KI greifen wir auf ein SVN-Repository zurück, welches uns durch SAAS-Secure zur Verfügung gestellt wird. Auf die entsprechenden Repositories haben nur ausgewählte Personen Zugriffsrechte. Der Download der Repositories ist ebenfalls nur mit einem gültigen Benutzerzugang möglich.

Begriffe

Nachfolgend sind einige Begriffe im Zusammenhang mit Repositories erklärt. Die einzelnen Begrifflichkeiten unterscheiden sich zwischen SVN und GIT teilweise. In einem slchen Fall sind beie Begriffe genannt.

Arbeitskopie

Eine Arbeitskopie ist eine lokale Kopie eines online verfügbaren Repository. die Arbeitskopie ist ggf. ebenfalls ein Repository und in ihr können nach belieben Änderungen gemacht werden, welche bei Bedarf mit dem online Repository synchronisiert werden können. SVN synchronisiert generell alle Änderungen immer mit dem online Repository, da die Arbeitskopie hier nur ein einfaches Verzeichnis mit der aktuellen Versiond es online Repository ist. GIT erstell dagegen ein echtes lokales Repository welcehs ebenfalls alle Änderungen dokumentiert und erst bei Bedarf mit dem online Repository synchronisiert wird.

Checkout

Checkout beschreibt das herunterladen eines Repository und erstellen einer lokalen Arbeitskopie

Commit

Ein Commit ist das Einrewichen einer oder mehrere Änderungen in einem Repository. Ein Commit ist also quasi das Speichern einer neuen Version einer oder mehrerer Dateien. Üblicherweise wird zu einem Commit ein Kommentar verfasst, welcher in kurzer Form die Änderungen beschreibt um diese schnell nachvollziehen udn wiederherstelln zu können.
WICHTIG: Ein Commit bei SVN läd die Änderungen der Arbeitskopie in das online Repository hoch. Bei GIT wird dagegen nur das lokale Repository aktualisiert.

Branch

Ein Branch ist ein Entwicklungszweig eines Repository. Ein Repository kann mehrere Branches enthalten, welche unterschiedliche Entweicklungsziele verfolgen. Typischerweise erstellt man einen neuen Branch um eine neue Idee auszuprobieren. Ist die Idee erfolgreich wird der Branch wieder auf den Haupt-Branch zurückgeführt bzw. in diesen integriert.

Push

Push ist der Vorgang bei einem GIT Repository, bei dem die Änderungen des lokalen Repository (Arbeitskopie) zum online Repository übertragen werden.

Pull / Update

Ein Pull (GIT) bzw. Update (SVN) beschreibt das Aktualisieren der Arbeitskopie bzw. des lokalen Repository mit den neusten Änderungen des onlien Repository.

Merge

Hat ein Benutzer eine Datei verändert, ein zweiter Benutzer aber ebenfalls und hat dieser zweite Benuter seine Änderungen bereits mit dem online Repository synchronisiert, kann der erste Benutzer seine Änderungen ncith einfach hochladen. Er muss die Änderungen beider Versionen (seiner lokalen und der online verfügbaren) erst zusammenfügen (mergen). Dazu kann ers sich die Differenzen zwischen beiden Dateien anzeigen lassen, seine Version entsprechend anpassen und anschließend als zusammengefügt (merged) markieren und hochladen.
Dieser Vorgang stellt sicher, dass keine Änderungen unbeachtet überschrieben werden.

Richtlinien

Es gibt einige Richtlinien und Verhaltensregeln bei Repositories,w elche für eine erfolgreiche Zusammenarbeit nötig sind.

Sprich dich ab

Das Wichtigste in einem Projekt ist die Kommunikation. Sprich dich mit den anderen Programmierern ab, wer was bearbeitet, wie Schnittstellen aussehen sollen und bis wann welche Aufgabe erledigt sein soll. Bei github gibt es dazu sog. Issues, mit welchen Fehler, Probleme und Ideen vermerkt, einzelnen Benutzern und Meilensteinen des Projekts zugeordnet werden können.

Aktualisiere oft

Um deine Arbeitskopie auf dem aktuellen Stand zu halten solltest du diese mindestens einmal aktualisieren, bevor du mit deiner Arbeit beginnst. So stellst du sicher, dass dein eigenen Programmcode immer zu dem der anderen Programmierer passt.

Änderungen so schnell wie möglich hochladen

Hast du etwas geändert solltest du diese Änderung so schnell wie möglich hochladen. Nur so können die anderen Programmierer mit deinen Ergebnissen weiterarbeiten. Generll solltest du nur fertige Änderungen hochladen. Das Programm sollte also keine Syntaxfehler enthalten, nur weil du deine Funktionen noch nicht abgeschlossen hast.
Es kommt jedoch vor, dass deine Änderungen umfrangreicher sind und über mehrere Tage gehen. Dann solltest du deine Änderungen trotzdem am Ende des Tages hochladen und einen entsprechenden Kommentar dazu hinterlassen was noch nicht funktioniert.

Verfasse sinnvolle Kommentare

Jeder Änderung sollte kommentiert werden. Nur so lässt sich jederzeit nachvollziehen wer was gemacht hat. Dein Kommentar sollte dabei zu kurz wie möglich sein, jedoch alle wichtigen Änderungen umfassen. Am besten geht das, wenn du jede fertige Änderung sofort hochlädst. TIPP: Verfasse deine Kommentare auf Englisch. Das trainiert und ermöglicht auch nicht-deutsch-sprechenden Programmieren deine Kommentare zu lesen.

Keine Binärdateien / Archive

Repositories funktionieren am Besten mit Textdateien. Du solltest also soweit möglich keine Binardateien oder Archive hochladen. Wenn dein Projekt externe Bibliotheken verwendet, kannst du eine entsprechende Readme-Datei einfügen. Solltest du Bibliotheken dennoch hochladen, achte darauf, diese nicht ständig zu verschieben oder neu hochzuladen. Denn im Gegensatz zu Textdateien können Repositories bei binären Dateien zu jeder Version nur die komplette Datei speichern. Bei Textdateien werden dagegen nur die Änerungen gespeichert, was Speicherplatz spart.

Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License