Commit 43b63c7b authored by Lukas Nagel's avatar Lukas Nagel
Browse files

change flow of the presentation

parent d6eb526d
......@@ -3,8 +3,7 @@ default: presentation.pdf
presentation.pdf: theme.tex
%.pdf: %.tex
latexrun --latex-cmd lualatex -o $@ -O $*.out $< ||\
if [[ -e $*.out/$@ ]]; then mv $*.out/$@ $@; else exit 42; fi;
latexrun --latex-cmd lualatex -o $@ -O $*.out $<
polish:
rm -rf presentation.out
......
......@@ -24,7 +24,7 @@
% Überblick über git
%
\section{Überblick über git}
\subsection{\secname: Versionsverwaltungssystem}
\subsection{Versionsverwaltungssystem}
\begin{frame}
\frametitle{\subsecname}
\code{git} ist ein Versionsverwaltungssystem\\
......@@ -37,7 +37,7 @@
\code{git} wird über die Kommandozeile bedient
\end{frame}
\subsection{\secname: dezentrale Topologie}
\subsection{Dezentrale Topologie}
\begin{frame}
\frametitle{\subsecname}
\code{git} ist dezentral
......@@ -49,59 +49,78 @@
\end{itemize}
\end{frame}
\subsection{Überblick über git: Arbeitsverzeichniss}
\subsection{Arbeitsverzeichniss, Index und Repository}
\begin{frame}
\frametitle{\subsecname}
\code{git} versioniert Dateien im \code{Arbeitsverzeichniss}
\begin{itemize}
\item Separat vom Repository
\item Ort an dem neue Versionen erstellt werden
\item Datei inhalt entspricht \code{blob} im Repo
\item Verzeichniss entspricht \code{tree} im Repo
\item Ort für Änderungen der nächsten Version
\end{itemize}
\end{frame}
\subsection{Überblick über git: Index}
\begin{frame}
\frametitle{\subsecname}
Änderungen werden in den \code{index} aufgenommen
\begin{itemize}
\item Enthält somit Kopie der aktuellen Version,
mit den Änderungen für die nächste Version
\item Erlaubt das sammeln von Änderungen
\end{itemize}
\end{frame}
\subsection{Überblick über git: Repository}
\begin{frame}
\frametitle{\subsecname}
Eine neue Version wird durch einen \code{commit} erzeugt
\begin{itemize}
\item Enthält Kopie des \code{index}
\item Beschreibung
\item Autor
\item Beschreibung und Informationen zum Autor
\item Referenzen auf beliebig viele Vorgänger\code{commit}s
\item Schnappschuss aller Dateien der aktuellen Version
\end{itemize}
\code{commit}s werden im \code{Repository} gespeichert
und sind über ihren SHA1 \code{Hash} adressierbar
\code{Repository} speichert \code{commit}s
unter ihrem SHA1 \code{Hash}
\end{frame}
\subsection{Überblick über git: Versionsgeschichte}
\subsection{Versionsgeschichte}
\begin{frame}
\frametitle{\subsecname}
Die Menge aller \code{commit}s, ergibt die Versionsgeschichte als \code{DAG}
\begin{itemize}
\item Zeiger auf commits: \code{branches}
\item Der \code{branch} auf den der \code{HEAD} zeigt, wird mit jedem Commit vorwärts bewegt
\item Mehrere Vorgänger bzw. Nachfolger: \code{Zweig}e (\code{branches})
\item Zeiger auf commits: Spitze des \code{branches}
\item \code{HEAD}: Symbolische Referenzen auf akutellen Zweig
\item Zeiger wird mit jedem Commit vorwärts bewegt
\end{itemize}
\center
\huge\alert{Grafik: Versionsgraph}
\end{frame}
%
% Einführendes Beispiel
% Git Objekte
%
\section{Einführendes Beispiel}
\section{Die git Objektdatenbank}
\subsection{Datenstruktur des git Objekts}
\begin{frame}
\frametitle{\subsecname}
\begin{itemize}
\item Git speichert intern \code{objekt}e
\item Referenz auf objekte durch Hash des Zielobjekts
\end{itemize}
\center{} {\huge UMLartig git objekt}
\end{frame}
\subsection{Konsequenz}
\begin{frame}
\frametitle{\subsecname}
\begin{itemize}
\item Integritäts Mechanismus Ähnlich zu Block Chain \\
jeder commit hash enthält:
\begin{itemize}
\item Hash des \code{tree}s und somit Hashes der \code{blob}s
\item Hashes der Vorgänger
\end{itemize}
\item Deduplizierung: Objekte mit gleichem Inhalt werden nur einmal gespeichert
\item Umbnennung muss nicht gesondert behandelt werden, kleine änderung im \code{tree} objekt
\item Effizienz: Branches benötigen nur Zeiger
\end{itemize}
\end{frame}
%
% Anwendungs Beispiel
%
\section{Anwendungs Beispiel}
\begin{frame}
\frametitle{\secname}
\begin{Beispiel}
......@@ -119,7 +138,7 @@
\subsection{Initialisierung}
\begin{frame}[fragile]
\frametitle{\secname: \subsecname}
\frametitle{\subsecname}
\begin{Beispiel}
Zunächst muss das Repository initialisiert werden:
\begin{commandline}
......@@ -134,7 +153,7 @@
\subsection{Status anzeigen}
\begin{frame}[fragile]
\frametitle{\secname: \subsecname}
\frametitle{\subsecname}
\begin{Beispiel}
Der sehr nützliche Befehl \code{status} gibt schnellen Überblick
\begin{commandline}
......@@ -147,15 +166,14 @@
\out{algo.py} \\
\out{proof.tex} \\
\out{} \\
\out{nichts zum Commit vorgemerkt,} \\
\out{aber es gibt unversionierte Dateien} \\
\out{nichts zum Commit vorgemerkt} \\
\end{commandline}
\end{Beispiel}
\end{frame}
\subsection{Dateien versionieren}
\begin{frame}[fragile]
\frametitle{\secname: \subsecname}
\frametitle{\subsecname}
\begin{Beispiel}
\begin{commandline}
\cmd{git add} proof.tex algo.py & \cmt{zum index hinzufügen} \\
......@@ -175,7 +193,7 @@
\subsection{Änderungen versionieren}
\begin{frame}[fragile]
\frametitle{\secname: \subsecname}
\frametitle{\subsecname}
\begin{Beispiel}
\begin{commandline}
\cmd{vim} algo.py & \cmt{nach pep8 formatieren} \\
......@@ -189,16 +207,15 @@
\cmd{git commit -m} \str{pep8} & \cmt{Änderungen commiten} \\
\end{commandline}
\end{Beispiel}
\center{} {\huge \alert{Grafik: Versionsgraph}}
\center
\begin{figure}
\end{figure}
\end{frame}
%
% Vorstellung zu lösender Probleme
%
\subsection{Wozu benötigen sie git?}
\begin{frame}
\center{} \huge{} \subsecname{}
\end{frame}
\subsection{Welche Probleme löst git?}
\begin{frame}
\frametitle{\subsecname}
\keyword{Versionsgeschichte Nachvollziehen}
......@@ -236,50 +253,23 @@
\frametitle{\subsecname}
\keyword{Kollaboration}
\begin{itemize}
\item Jeder hat eigene Kopie des Hauptrepos
\item Kein Server notwendig, funktioniert somit offline
\item Personen können unabhängig von einander Arbeiten
\item Zusammenführung unterschiedlicher Repos funktioniert wie bei Zweigen
\end{itemize}
\end{frame}
%
% Git Objekte
%
\section{Der git objekt Speicher}
\subsection{Datenstruktur des git Objekts}
\begin{frame}
\frametitle{\subsecname}
\begin{itemize}
\item Git speichert intern \code{objekt}e
\item Referenz auf objekte durch Hash des Zielobjekts
\end{itemize}
\center{} {\huge UMLartig git objekt}
\end{frame}
\subsection{Konsequenz}
\begin{frame}
\frametitle{\subsecname}
\begin{itemize}
\item Integritäts Mechanismus Ähnlich zu Block Chain \\
jeder commit hash enthält:
\item Mechanismen zum synchronisieren verteilter Repos
\item Änderungen werden am lokalen Repo vorgenommen
\begin{itemize}
\item Hash des \code{tree}s und somit Hashes der \code{blob}s
\item Hashes der Vorgänger
\item Vermeidet Konflikte
\item Kein Server notwendig
\end{itemize}
\item Deduplizierung: Objekte mit gleichem Inhalt werden nur einmal gespeichert
\item Umbnennung muss nicht gesondert behandelt werden, kleine änderung im \code{tree} objekt
\item Effizienz: Branches benötigen nur Zeiger
\item Viele Workflows möglich
\end{itemize}
\end{frame}
%
% Branches
%
\section{Branches}
\subsection{\secname: Kommandos}
\subsection{Kommandos}
\begin{frame}
\frametitle{\subsecname}
Neuen Branch erstellen
......@@ -291,15 +281,10 @@
\begin{commandline}
\cmd{git checkout -b <branchname>} & \\
\end{commandline}
~\\
Branches mergen
\begin{commandline}
\cmd{git merge <branchname>} & \\
\end{commandline}
\end{frame}
\section{Branches}
\subsection{\secname: Beispiel}
\subsection{Beispiel}
\begin{frame}
\frametitle{\subsecname}
\begin{Beispiel}
......@@ -315,8 +300,7 @@
\end{Beispiel}
\end{frame}
\section{AXE IT?}
\subsection{\secname: Mergen}
\subsection{Mergen}
\begin{frame}
\frametitle{\subsecname}
\begin{itemize}
......@@ -329,7 +313,7 @@
\end{itemize}
\end{frame}
\subsection{\secname: Fast-Forward Merge}
\subsection{Fast-Forward Merge}
\begin{frame}
\frametitle{\subsecname}
Branch \code{A} soll in \code{B} gemerget werden
......@@ -343,7 +327,7 @@
\end{frame}
\subsection{\secname: 3-Wege-Merge}
\subsection{3-Wege-Merge}
\begin{frame}
\frametitle{\subsecname}
Branch \code{A} soll in \code{B} gemerget werden,
......@@ -358,8 +342,7 @@
{\huge \alert{Grafik: ergebnis}}
\end{frame}
\section{Branches}
\subsection{\secname: Beispiel merge}
\subsection{Beispiel merge}
\begin{frame}
\frametitle{\subsecname}
Bob hat auf dem \code{master} branch am Beweis weitergearbeitet. \\
......@@ -396,8 +379,9 @@
\end{commandline}
\end{frame}
\subsection{Grundlegende Kommandos}
\begin{frame}
\frametitle{\secname}
\frametitle{\subsecname}
Remote zu bestehendem Repo hinzufügen
\begin{commandline}
\cmd{git remote add} <name> <url> & \\
......@@ -415,14 +399,26 @@
\end{commandline}
\end{frame}
\subsection{Beispiel}
\begin{frame}
\frametitle{\subsecname}
Bob will Anderungen von Alice in sein lokales Repo einpflegen
\begin{Beispiel}
\begin{commandline}
\visible<1->{\cmd{git remote add} alice \str{git.upb.de/alice/bogo}} & \\
\visible<2->{\cmd{git fetch} alice master} & \\
\visible<3->{\cmd{git merge} alice/master} & \\
\end{commandline}
\only<1>{\center{} {\huge \alert{Grafik: zustand}}}
\only<2>{\center{} {\huge \alert{Grafik: nach fetch}}}
\only<3>{\center{} {\huge \alert{Grafik: nach merge}}}
\end{Beispiel}
\end{frame}
%
% Überblick über GitHub
%
\section{\faGithub\ GitHub}
\begin{frame}
\center{} \Huge{\faGithub\ GitHub}
\end{frame}
\begin{frame}
\frametitle{\secname}
......@@ -443,6 +439,7 @@
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{\secname}
\center\small
......@@ -464,7 +461,7 @@
%
% Kollaboration in GitHub über Forks und Pull Request
%
\subsection{\secname: Forks und Pullrequests}
\subsection{Forks und Pullrequests}
\begin{frame}
\frametitle{\subsecname}
GitHub nutzt zum Beitragen primär Forks und Pullrequests
......
......@@ -32,9 +32,9 @@
\setbeamertemplate{headline}{}
\def\footline{
\insertsectionnavigationhorizontal{0.98\textwidth}{}{
\color{black!80}\scriptsize\tt
\insertframenumber/\inserttotalframenumber
\insertsectionnavigationhorizontal{0.95\textwidth}{}{
\color{black!80}
\insertframenumber/\inserttotalframenumber\hfill
}
}
\setbeamertemplate{footline}{\footline}
......
Markdown is supported
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