diff --git a/main.tex b/main.tex
index df342a43c1f9a3349fcaf2cd8355fe63341708aa..7906b9cecae7edeec8d4b85b3659c357408ceb2d 100644 (file)
--- a/main.tex
+++ b/main.tex
+%
+% Copyright (C) 2010-2011 Sebastian 'tokkee' Harl <sh@tokkee.org>
+% All rights reserved.
+%
+% Redistribution and use in source and binary forms, with or without
+% modification, are permitted provided that the following conditions
+% are met:
+% 1. Redistributions of source code must retain the above copyright
+% notice, this list of conditions and the following disclaimer.
+% 2. Redistributions in binary form must reproduce the above copyright
+% notice, this list of conditions and the following disclaimer in the
+% documentation and/or other materials provided with the distribution.
+%
+% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+% ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+% TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+% PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
+% CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+% EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+% PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+% OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+% WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+% OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+% ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+%
+
\usetheme{default}
\setbeamertemplate{navigation symbols}{}
\author[Sebastian "`tokkee"' Harl]{Sebastian "`tokkee"' Harl\\
$<$tokkee@debian.org$>$}
-%\institute{Debian RRDtool Team}
+\institute{team(ix) GmbH}
\date[ALIT 2011]{\textbf{Augsburger Linux-Infotag 2011}\\ 26.\ März 2011}
\subject{Versionierung für OpenSourcler}
\titlegraphic{
- \vspace*{-10mm}
+ \vspace*{-12mm}
+ \begin{minipage}[b]{19mm}
+ \includegraphics[height=10mm]{teamix_logo_cmyk.pdf}
+ \end{minipage}
\hfill
- \begin{minipage}[c]{13mm}
+ \begin{minipage}[b]{13mm}
\includegraphics[height=25mm]{gitlogo.pdf}
\end{minipage}
}
\end{tikzpicture}
\end{textblock*}
\begin{textblock*}{122mm}(3mm,85mm)
+ \begin{minipage}[c]{20mm}
+ \includegraphics[width=20mm]{teamix_logo_cmyk.pdf}
+ \end{minipage}
\hfill
- \begin{minipage}[c]{105mm}
+ \begin{minipage}[c]{93mm}
\centering
{\tiny \insertshorttitle{}
\hspace{3mm}---\hspace{3mm}
\end{tikzpicture}
\end{textblock*}
\begin{textblock*}{122mm}(3mm,85mm)
+ \begin{minipage}[c]{20mm}
+ \includegraphics[width=20mm]{teamix_logo_cmyk.pdf}
+ \end{minipage}
\hfill
- \begin{minipage}[c]{105mm}
+ \begin{minipage}[c]{93mm}
\centering
{\tiny \insertshorttitle{}
\hspace{3mm}---\hspace{3mm}
\begin{frameframe}{Arbeiten mit Git: Grundlagen}
\begin{itemize}
- \item $>>$ 100 einzelne Befehle
+ \item ca.\ 150 einzelne Befehle
\item "`Porcelains"' und "`Plumbing"'
- \item Dokumentation als Manpages - \texttt{git(7)}
+ \item Dokumentation als Manpages --- \texttt{git(7)}
\item \texttt{git help}, \texttt{git $<$command$>$ -h}
\item Benutzer Handbuch:
\url{http://www.kernel.org/pub/software/scm/git/docs/user-manual.html}
+ \item "`Git Community Book"': \url{http://book.git-scm.com/}
+ \item Buch "`Pro Git"': \url{http://progit.org/book/}
\end{itemize}
\end{frameframe}
\item $\rightarrow$ Benutzerinformationen für Commit-Metadaten
\end{itemize}
\end{block}
+\end{frameframe}
- \uncover<2>{
+\begin{frameframe}{Git konfigurieren}
\begin{block}{Bunt und in Farbe}
\begin{itemize}
\item \texttt{git config --global color.ui auto}
\texttt{status} Ausgaben
\end{itemize}
\end{block}
+
+ \uncover<2>{
+ \begin{block}{Weitere nützliche Optionen}
+ \begin{itemize}
+ \item {\ttfamily git config --global merge.tool vimdiff}
+ \item {\ttfamily git config --global push.default = current}
+ \item {\ttfamily git config --global alias.wdiff 'diff --color-words'}
+ \item …
+ \end{itemize}
}
+ \end{block}
\end{frameframe}
\begin{frameframe}{Repositories erstellen}
{\ttfamily
\footnotesize
\$ git show\newline
- \$ git show HEAD:foo
+ \$ git show HEAD:foo\hfill (siehe {\ttfamily gitrevisions(7)})
}
\begin{itemize}
\item Branch: "`automatischer"' Zeiger auf eine Reihe von Commits
\item \texttt{HEAD}: Zeiger auf den aktuellen Branch
\item \texttt{master}: "`Standard"'-Branch
- \item Merge: Zusammenführen von zwei Entwicklungssträngen
+ \item Merge: Zusammenführen von zwei (oder mehr) Entwicklungssträngen
\end{itemize}
\begin{block}{Branch erzeugen}
\uncover<2>{
\$ git branch\newline
\hspace*{1em}master\newline
- * new-branch
+ * $<$Name$>$
}
\end{block}
\end{frameframe}
\ttfamily
\footnotesize
\$ git merge master\newline
- \$ git rebase master
+ \$ git rebase master \# nur in privaten Branches!
\end{block}
\uncover<2>{
\begin{block}{Konflikte auflösen}
\begin{itemize}
\item Konflikte entstehen, wenn die gleiche Stelle unterschiedlich
- geändert wurde\newline
- $\Rightarrow$ manuelles Eingreifen nötig
+ geändert wurde $\Rightarrow$ manuelles Eingreifen nötig
\item Commit-Erzeugung wird unterbrochen
\item Konfliktanzeiger in den betroffenen Dateien
\item manuelle Entscheidung, wie beide Änderungen zusammengeführt werden
+ \item {\ttfamily git mergetool}
\end{itemize}
\end{block}
}
\footnotesize
\$ git remote add $<$Name$>$ URL\newline
\$ git remote update $<$Name$>$
+ \$ git push $<$Name$>$ \# ggf. zusätzlich Branch angeben
\end{block}
\end{frameframe}
\end{itemize}
\end{frameframe}
+\begin{frameframe}{Ein Beispiel …}
+ \begin{center}
+ \begin{tikzpicture}[x=1mm,y=1mm]
+ \node at (0,0) [circle,draw=red,fill=red!50,thick] (r) {};
+ \node at (5,0) [anchor=west] {Upstream Repo};
+
+ \uncover<3->{
+ \node at (-20,-30) [circle,draw=green,fill=green!50,thick] (i) {};
+ \node at (-25,-30) [anchor=east] {interner Klon};
+ }
+ \uncover<2->{
+ \draw [->] (r.south west) -- (i.north east);
+ \node at (-12,-15) [anchor=east] {\ttfamily clone};
+ }
+
+ \uncover<5->{
+ \node at (-25,-45) [circle,draw=black,fill=black!50,thick] (c1) {};
+ \node at (-20,-45) {…};
+ \node at (-15,-45) [circle,draw=black,fill=black!50,thick] (cn) {};
+ \node at (-20,-50) {interne "`Clients"'};
+ }
+ \uncover<4->{
+ \draw [->] (i.south) -- (c1.north);
+ \node at (-20,-40) {\tiny …};
+ \draw [->] (i.south) -- (cn.north);
+ }
+
+ \uncover<7->{
+ \node at (20,-30) [circle,draw=yellow,fill=yellow!50,thick] (qa) {};
+ \node at (25,-30) [anchor=west] {QA Repo};
+ }
+ \uncover<6->{
+ \draw [->] (i.east) -- (qa.west);
+ \node at (0,-32) [anchor=north] {\ttfamily clone};
+ }
+
+ \uncover<8->{
+ \draw [<->,dashed] (r.south east) -- (qa.north west);
+ \node at (12,-15) [anchor=west] {\ttfamily remote add up …};
+ }
+
+ \uncover<9>{
+ \node at (-5,-20)
+ [anchor=north west,draw=black,fill=white,thick,rounded corners,%
+ inner sep=3mm]
+ {\begin{minipage}{55mm}
+ \ttfamily
+ \$ git fetch up\\
+ \$ git checkout master\\
+ \$ git merge up/master\\
+ \$ git mergetool\\
+ \$ git push \# origin master
+ \end{minipage}
+ };
+ }
+ \end{tikzpicture}
+ \end{center}
+\end{frameframe}
+
\begin{frameframe}{Frontends}
\begin{itemize}
\item \texttt{tig} (ncurses)
\item \texttt{gitk} (Tk, read-only)
\item \texttt{qgit} (Qt)
\item \texttt{magit} (emacs)
+ \item \texttt{egit} (Eclipse)
\end{itemize}
\end{frameframe}