From f97ca1e5cfb49a1cd2ab7c2a8070188494827c12 Mon Sep 17 00:00:00 2001 From: Pierre Habouzit Date: Fri, 22 Feb 2008 18:15:42 +0100 Subject: [PATCH] save Signed-off-by: Pierre Habouzit --- .gitignore | 1 + git.tex | 110 ++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 102 insertions(+), 9 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2affed5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +git.pdf diff --git a/git.tex b/git.tex index 703730e..db5c47a 100644 --- a/git.tex +++ b/git.tex @@ -33,6 +33,10 @@ \begin{frame} \titlepage \end{frame} + +\begin{frame} + \tableofcontents +\end{frame} %}}} \section{Why choosing \git}%{{{ @@ -52,7 +56,7 @@ \begin{frame}{It's a DSCM [2/2]} With \git, as a DSCM, most of the issues are gone. \begin{itemize} - \item<2-> Offline work is possible, in fact you always work offline; + \item<2-> Off-line work is possible, in fact you always work off-line; \item<3-> Incremental work is possible; \item<4-> \git{} allow you to completely erase a wrong idea if you didn't shared it yet; @@ -90,7 +94,7 @@ \uncover<6->{ In other words, \git{} is a suitable replacement for both SVN and - quilt\footnote{or your prefered patch system}. + quilt\footnote{or your preferred patch system}. } \end{frame} @@ -117,22 +121,110 @@ {\bf Demo}: tokyocabinet packaging: \begin{itemize} \item Step 1: importing upstream; - \item Step 2: backuping the orig.tar.gz. + \item Step 2: backing up the orig.tar.gz. \end{itemize} \end{frame} \begin{frame}{The repository layout: patches} Second of all, instead of using quilt, I use a private git branch to hold my - patch queue (usually called {\tt \$origbranch+patches}). There are many + patch queue (usually called {\tt \$\{upstream\_branch\}+patches}). There are many reasons to that: \begin{itemize} \item<2-> I only use one tool: \git{}; - \item<3-> quilt doesnt know about diff3, hence isn't very practical for - partially merged patches; - \item - \item + \item<3-> quilt doesn't know about diff3, unpractical for partially merged + patches; + \item<4-> I believe it to be nicer to browse or to cherry-pick for + upstreams. + \end{itemize} + \vspace{1ex} + \uncover<5->{ + {\bf Demo:} let's rebase our patch branch for tokyocabinet ! + } +\end{frame} + +\begin{frame}{The repository layout: debian packaging} + Finally, everything that is Debian specific is kept into a debian branch. + \begin{itemize} + \item<2-> One branch per suite: {\tt debian-etch}, {\tt debian-sid}, {\tt + debian-exp}; + \item<3-> the corresponding upstreams are merged into this {\tt debian} + branch; + \item<4-> the {\tt upstream+patches} branch is serialized under + {\tt debian/patches}. \end{itemize} + \vspace{1ex} + \uncover<5->{ + {\bf Demo:} let's release our tokyocabinet package ! + } +\end{frame} +%}}} +\section{How to turn mud into gold efficiently}%{{{ +\begin{frame}{Hiding to the world you're a dirty pig} + There is nothing more useless than a crappy SCM history. I don't know how + {\it you} work, but I tend to do everything at the same time. + + \vspace{1em} + \uncover<2->{ + Well, then just bind {\tt :wa} to {\tt :wa:!git commit -a} in your + editor… + } + + \vspace{1em} + \uncover<3->{ + Then work like a pig, compulsively saving\^{}Wcommiting your stuff… + } + + \vspace{1em} + \uncover<4->{ + And when you're happy of the current sate, let's fake that you're a good + boy. + } + + \vspace{1em} + \uncover<5->{ + {\bf Demo}: the same in pictures. + } +\end{frame} +\begin{frame}{Using \git{} for other's packages} + \git{} is not only useful as a versioning tool, it also helps to work fast + with NMUs and security uploads. + \begin{enumerate} + \item<2-> {\tt \$ git init \&\& git add .\@{} \&\& git commit -asm.} + \item<3-> {\it hack, hack …} {\tt \$ git commit -asm'try this'} + \item<4-> {\it hack, hack …} {\tt \$ git commit -asm'try that'} + \item<5-> {\it rebuild… Ok it works, let's produce a clean patch:}\\ + {\tt \$ git rebase -i [...]} + \end{enumerate} + + \vspace{1ex} + \uncover<6->{ + Some packages don't rebuild twice in a row properly, because their + {\tt clean} target is broken… + } + + \uncover<7->{ + \alert{I laugh at those}:\\ + {\tt \$ git clean -d \&\& git reset --hard} + } +\end{frame} +%}}} +\section{The END !}%{{{ + +\begin{frame}{The END !} + If you're not too bored already, I'll gladly answer your questions now. + + \vspace{2em} + + And remember, git has a tremendous community. + + \begin{center} + {\tt } + \end{center} + + Also consult the documentation: + {\tt /usr/share/doc/git-doc/index.html}\footnote{I assume you have git-doc + installed, it will soon be part of base}. \end{frame} %}}} \end{document} -% vim:tw=78: +% vim:tw=78 spell spelllang=en: -- 2.20.1