Commit 3b3812bf authored by Lukas Nagel's avatar Lukas Nagel
Browse files

add subheadings

parent f44bdcd5
Pipeline #142435 passed with stages
in 7 minutes and 31 seconds
......@@ -60,25 +60,9 @@ Projektplanung sowie Dokumentation anbietet.
[^1]: [https://github.com/](https://github.com/)
## TODO: Beispiel
Lorem ipsum dolor sit amet, consectetuer adipi-
scing elit. Etiam lobortis facilisis sem. Nullam
nec mi et neque pharetra sollicitudin. Praesent
imperdiet mi nec ante. Donec ullamcorper, fe-
lis non sodales commodo, lectus velit ultrices
augue, a dignissim nibh lectus placerat pede.
Vivamus nunc nunc, molestie ut, ultricies vel,
semper in, velit. Ut porttitor. Praesent in sapien.
Lorem ipsum dolor sit amet, consectetuer adi-
piscing elit. Duis fringilla tristique neque. Sed
interdum libero ut metus. Pellentesque place-
rat. Nam rutrum augue a leo. Morbi sed elit sit
amet ante lobortis sollicitudin. Praesent blandit
blandit mauris. Praesent lectus tellus, aliquet
aliquam, luctus a, egestas a, turpis. Mauris la-
cinia lorem sit amet ipsum. Nunc quis urna
dictum turpis accumsan semper.
## WIP: Beispiel
Lorem Ipsum.
# Vorgänger Technologien
......@@ -328,21 +312,6 @@ Somit ergibt sich eine Kette kryptographischer Hashes, wodurch die *Integrität*
des Projektverzeichnisses und der gesamten Versionsgeschichte sicherstellt wird
[@haenel2015, S. 42].
Dadurch das ein Commmit mehrere Vorgänger hat lässt sich die Versionsgeschichte
als gerichteter Graph ohne Zyklen (*DAG*) betrachten.
In Abbildung \ref{fig:graph} ist ein solcher abgebildet.
Ein Zyklus ist theoretisch nicht ausgeschlossen,
aber nur erschöpfende Suche möglich, da wenn sich zwei Commits gegenseitig als
Vorgänger haben sollen, für den jeweiligen Hash der jeweils andere
Hash bereits bekannt sein müsste.
Die Knoten, wie in Abbildung \ref{fig:graph} zu sehen, entsprechen den Commits
und die Vorgänger Beziehung ist durch die Kanten ausgedrückt.
Zweige entsprechen in diesem Modell Zeigern auf Commits.
Das Verständnis vieler Operationen wird durch dieses Modell vereinfacht
[@haenel2015, S. 41].
![Exemplarischer Versionsgraph](../grafiken/example-graph.pdf){#fig:graph}
Eine Besonderheit von Git ist der Index, oder auch *Staging Area*, genannt,
der als Schnittstelle zwischen Arbeitsverzeichnis und Repository fungiert.
Änderungen aus dem Arbeitsverzeichnis werden zünachst mittels der Add
......@@ -359,6 +328,27 @@ Somit lässt sich die nächste Version inkrementell erstellen
und muss nicht dem Zustand des Arbeitsverzeichnisses entsprechen
[@chacon2014].
## Versionsgeschichte als Graph
Dadurch das ein Commmit mehrere Vorgänger hat lässt sich die Versionsgeschichte
als gerichteter Graph ohne Zyklen (*DAG*) betrachten.
In Abbildung \ref{fig:graph} ist ein solcher abgebildet.
Ein Zyklus ist theoretisch nicht ausgeschlossen,
aber nur erschöpfende Suche möglich, da wenn sich zwei Commits gegenseitig als
Vorgänger haben sollen, für den jeweiligen Hash der jeweils andere
Hash bereits bekannt sein müsste.
Die Knoten, wie in Abbildung \ref{fig:graph} zu sehen, entsprechen den Commits
und die Vorgänger Beziehung ist durch die Kanten ausgedrückt.
Zweige entsprechen in diesem Modell Zeigern auf Commits.
Das Verständnis vieler Operationen wird durch dieses Modell vereinfacht
[@haenel2015, S. 41].
![Exemplarischer Versionsgraph](../grafiken/example-graph.pdf){#fig:graph}
## Verzweigung und Tags
Verzweigungen in Versionsgraph sind in Git sehr performant Umgesetzt.
Eine neuer Zweig erfordert lediglich das anlegen einer neuen Referenz,
also eine einfache Textdatei, in 'refs/heads'.
......@@ -413,6 +403,9 @@ Ein Tag muss nicht zwingend auf einen Commit zeigen,
das wohl prominenteste gegenbeispiel wäre Junio Hamanos GPG-Schlüssel
als blob Objekt im `git.git` Repository [@chacon2014].
## Verteiltes Git
Git ist ein *verteiltes* Versionsverwaltungssystem,
weshalb jeder nicht nur einen Schnappschuss des Projekts herunterlädt sondern
das Repository mit der gesamten Versionsgeschichte.
......@@ -458,6 +451,9 @@ So werden beispielsweise Änderungen des Linux Kernel an dessen Mailing Liste
geschickt und dort diskutiert, nachgebessert und eventuell abgelehnt oder
eingepflegt [@hamano2006].
## GitHub
Für Projekte auf GitHub hat sich ein neuer Ablauf durchgesetzt, der auf die
GitHub typischen Mechanismen Fork und Pull-Request setzt.
Da ein Projekt auf GitHub in Namensraum eines Nutzer abgelegt ist,
......@@ -491,6 +487,8 @@ festellen kann [@silva2020].
Actions bestehen aus Jobs, die auf einer Virtuellen Maschiene ausgeführt werden.
## Technische Voraussetzungen
Theoretisch gibt es keine Beschränkung welche Dateien Versioniert werden können,
Git speichert den Inhalt jeder Dateiversion auf die Gleiche weise,
nämlich als Schnappschuss in einem blob Objekt [@hamano2006].
......@@ -523,6 +521,7 @@ sind `git-annex` oder `git-portal`.
Für Projekte die auf GitHub veröffentlicht werden sollen gibt es weiterhin die
Einschränkung, dass höchstens 100MB pro Push Operation übertragen werden dürfen.
## Offene Enden
Der Befehlssatz ist "unusually rich"[^7] und besonders für Anfänger, die sich
......@@ -604,6 +603,7 @@ dass SSH und der Private Schlüssel verwendet werden[^6].
[^5]: https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account
[^6]: https://docs.github.com/en/authentication/connecting-to-github-with-ssh
## Nützliche Git Kommandos
`git init [<Verzeichnis>]`
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment