\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
-\usepackage{graphicx}
-
\usepackage{times}
%\usepackage[T1]{fontenc}
\newcommand{\git}{GIT}
%}}}
\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;
\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.
\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};
\end{itemize}
\vspace{1ex}
\uncover<5->{
- {\bf Demo:} let's release our tokyocabinet package !
+ {\bf Demo:} let's release our tokyocabinet package!
}
\end{frame}
%}}}
\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.
}
}
\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}