X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=git.tex;h=922e2bba194edebc245e68e1ced8a19e27c7b40d;hb=refs%2Fheads%2Fmaster;hp=db5c47aa0bc48e9cc936a15a02cdc173e092f9ae;hpb=f97ca1e5cfb49a1cd2ab7c2a8070188494827c12;p=~madcoder%2Ffosdem.git diff --git a/git.tex b/git.tex index db5c47a..922e2bb 100644 --- a/git.tex +++ b/git.tex @@ -7,8 +7,6 @@ \usepackage[english]{babel} \usepackage[utf8]{inputenc} -\usepackage{graphicx} - \usepackage{times} %\usepackage[T1]{fontenc} \newcommand{\git}{GIT} @@ -40,49 +38,63 @@ %}}} \section{Why choosing \git}%{{{ -\begin{frame}{It's a DSCM [1/2]} +\begin{frame}{Because SVN isn't good enough} I've packaged with SVN on svn.debian.org for a long time… \uncover<2->{\alert{well, it sucks}:} \begin{itemize} \item<3-> I wasn't able to work without network access; \item<4-> I couldn't work incrementally: you have to get other's patches; - \item<5-> I couldn't "try and see" and maybe discard some work without + \item<5-> I couldn't “try and see” and maybe discard some work without reverting patches: SVN never forgets; \item<6-> I like having the full upstream source at hand, but svn explodes doing that for large sources (KDE …). \end{itemize} \end{frame} -\begin{frame}{It's a DSCM [2/2]} +\begin{frame}{Because \git{} does what I need} With \git, as a DSCM, most of the issues are gone. \begin{itemize} \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; + \item<4-> \git{} allows you to completely erase a wrong idea if you didn't + share it yet; \item<5-> \git{} storage is extremely efficient: the marginal cost of commits decreases with the number of commits. \end{itemize} +\end{frame} - \vspace{1ex} +\begin{frame}{A bit more about \git{} storage} + \git{} storage is very efficient and optimized. Some numbers: - \uncover<6->{ - GNU libc version 2.7 weights weights 115Mo unpacked. The full glibc - history (from before 1984) weights less than \alert{120Mo}. + \vspace{1em} + \uncover<2->{ + xorg-xserver.git, goes back to 2000, is \alert{20MB} big. The last + orig.tar.gz is 8MB big, more than 84MB unpacked. } - \vspace{1ex} + \vspace{1em} + \uncover<3->{ + dpkg.git, whole history since April 1996, generates a git pack of + \alert{15MB}. The last dpkg release is 17MB big unpacked. + } - \uncover<7->{ - My experience shows that \git{} storage, for a project with quite some - history, is smaller than 2.5 times the size of the last upstream release - (unpacked). + \vspace{1em} + \uncover<4->{ + GNU libc version 2.7 weights 115MB unpacked. The full glibc history + (starts in the eighties) generates a \git{} pack of \alert{104MB}. + } + + \vspace{1em} + \uncover<5->{ + Though, this won't probably be true for packages with a lot of binary + stuff in it, where delta compression is less likely to produce good + results (games data packages come to mind). } \end{frame} \begin{frame}{A real maintainer toolbox} - Though \git{} is special, because it was designed by a {\bf Maintainer}. - This has several implications: + \git{} is special, because it was designed by a {\bf Maintainer}. This has + several implications: \begin{itemize} \item<2-> \git{} operations to look at the history are blazingly fast; \item<3-> \git{} operations to integrate patches are blazingly fast; @@ -106,7 +118,7 @@ \item<2-> if upstream uses a public SVN or \git{} repository, I track their SCM under the {\tt upstream/*} namespace. \item<3-> if upstream tarballs differ from the SCM, I also add a - {\tt upstream/tarballs} branch that replicates the tarball + {\tt upstream/tarballs} branch that replicates the tarballs directly. \item<4-> if upstream only releases tarballs, I only have an {\tt upstream} branch that is the successive import of tarballs. @@ -138,12 +150,13 @@ \end{itemize} \vspace{1ex} \uncover<5->{ - {\bf Demo:} let's rebase our patch branch for tokyocabinet ! + {\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. + Finally, everything that is Debian specific is kept into a \texttt{debian} + branch. \begin{itemize} \item<2-> One branch per suite: {\tt debian-etch}, {\tt debian-sid}, {\tt debian-exp}; @@ -154,7 +167,7 @@ \end{itemize} \vspace{1ex} \uncover<5->{ - {\bf Demo:} let's release our tokyocabinet package ! + {\bf Demo:} let's release our tokyocabinet package! } \end{frame} %}}} @@ -171,12 +184,12 @@ \vspace{1em} \uncover<3->{ - Then work like a pig, compulsively saving\^{}Wcommiting your stuff… + Then work like a pig, compulsively saving\^{}Wcommitting your stuff… } \vspace{1em} \uncover<4->{ - And when you're happy of the current sate, let's fake that you're a good + And when you're happy of the current state, let's pretend that you're a good boy. } @@ -208,9 +221,9 @@ } \end{frame} %}}} -\section{The END !}%{{{ +\section{The END!}%{{{ -\begin{frame}{The END !} +\begin{frame}{The END!} If you're not too bored already, I'll gladly answer your questions now. \vspace{2em}