summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkballou <kballou@devnulllabs.io>2017-03-08 20:00:11 -0700
committerkballou <kballou@devnulllabs.io>2017-03-16 14:09:45 -0600
commit716b71201ee86f2be28772c4ba159408c400b11d (patch)
treea64559ea031b1e6b202bd8f52362c53823b63b37
parent48fa7ec5497929c692dd982d544c48971ac76b86 (diff)
downloadgit-in-reverse-716b71201ee86f2be28772c4ba159408c400b11d.tar.gz
git-in-reverse-716b71201ee86f2be28772c4ba159408c400b11d.tar.xz
Add packfiles to plumbing section
-rw-r--r--src/code/packfiles/116
-rw-r--r--src/code/packfiles/27
-rw-r--r--src/code/packfiles/310
-rw-r--r--src/git-in-reverse.tex60
-rw-r--r--src/references.bib5
5 files changed, 91 insertions, 7 deletions
diff --git a/src/code/packfiles/1 b/src/code/packfiles/1
new file mode 100644
index 0000000..24819a0
--- /dev/null
+++ b/src/code/packfiles/1
@@ -0,0 +1,16 @@
+± git rev-list --objects --all | head -1 | \
+ git pack-objects --stdout | xxd
+Counting objects: 1, done.
+Total 1 (delta 0), reused 0 (delta 0)
+00000000: 5041 434b 0000 0002 0000 0001 950e 789c PACK..........x.
+00000010: 9d8c 510e c220 1005 ff39 c55e 40b3 0894 ..Q.. ...9.^@...
+00000020: 2531 c6ab 00bb 4d1b 6931 089e 5f8d 9ec0 %1....M.i1.._...
+00000030: bf37 93cc eb4d 0426 4ade 7967 2741 ca9a .7...M.&J.yg'A..
+00000040: 031a 9389 f024 9645 6764 173e 3293 bac7 .....$.Egd.>2...
+00000050: 267b 8729 4844 09c6 2349 326f c83c 3b66 &{.)HD..#I2o.<;f
+00000060: 4a12 58cf 19a3 f17a 162d 2a8e bed4 06b7 J.X....z.-*.....
+00000070: 144b a903 cebf 7165 79ee a394 12d3 e3b8 .K....qey.......
+00000080: d60b 684b 4193 d116 e180 1e51 e5ba 6d6b ..hKA......Q..mk
+00000090: eff2 4fab ea68 d097 b531 7c6f d40b 6bc6 ..O..h...1|o..k.
+000000a0: 4735 ffc0 30ce a4c0 140a a02e 648f 775c G5..0.......d.w\
+000000b0: 1fd1 654d a59e ..eM..
diff --git a/src/code/packfiles/2 b/src/code/packfiles/2
new file mode 100644
index 0000000..2ef0476
--- /dev/null
+++ b/src/code/packfiles/2
@@ -0,0 +1,7 @@
+± git rev-list --objects --all | head -1 | \
+ git pack-objects test
+Counting objects: 1, done.
+Total 1 (delta 0), reused 0 (delta 0)
+± ls test-*
+test-ffc030cea4c0140aa02e648f775c1fd1654da59e.idx
+test-ffc030cea4c0140aa02e648f775c1fd1654da59e.pack
diff --git a/src/code/packfiles/3 b/src/code/packfiles/3
new file mode 100644
index 0000000..2381ec5
--- /dev/null
+++ b/src/code/packfiles/3
@@ -0,0 +1,10 @@
+± git gc
+Counting objects: 9, done.
+Delta compression using up to 4 threads.
+Compressing objects: 100% (5/5), done.
+Writing objects: 100% (9/9), done.
+Total 9 (delta 0), reused 0 (delta 0)
+± find .git/objects -type f
+.git/objects/info/packs
+.git/objects/pack/pack-6b3ea4129144c819898dd16a08bc26c62d5ef8cc.idx
+.git/objects/pack/pack-6b3ea4129144c819898dd16a08bc26c62d5ef8cc.pack
diff --git a/src/git-in-reverse.tex b/src/git-in-reverse.tex
index 19e519e..9fee686 100644
--- a/src/git-in-reverse.tex
+++ b/src/git-in-reverse.tex
@@ -43,10 +43,6 @@
\subtitle{A Backwards Introduction to \\{} the ``information manager from
hell'' [e83c51633]}
\author[Ballou]{Kenny Ballou}
-\institute[zData]{%
- \inst{}%
- zData, Inc.
-}
\AtBeginSection[]{%
\begin{frame}
@@ -112,6 +108,9 @@ hell'' [e83c51633]}
\item<4->{``My preferred VCS tool''}
\item<5->{The ``information manager from hell''}
\item<6->{A distributed DAG}
+\begin{itemize}
+\item<6->{``A Graph Tree''}
+\end{itemize}
\item<7->{An object store}
\item<8->{A content addressable filesystem}
\item<9->{A key-value store}
@@ -122,8 +121,8 @@ hell'' [e83c51633]}
\frametitle{Git±}
What does Git store?
\begin{itemize}
-\item<2->{Objects}
-\item<3->{``Packs''}
+\item<2-4>{Objects}
+\item<3-3>{``Packs''}
\end{itemize}
\end{frame}
@@ -243,7 +242,8 @@ What does Git store?
\item[100644]{Regular file, *nix permissions 0644}
\item[100755]{Regular file, *nix permissions 0755, e.g., executable}
\item[120000]{Symbolic link}
-\item[160000]{?}
+\item[160000]{``Gitlink'', object from another repository, \texttt{fast-import}}
+\item[040000]{Subdirectory, \texttt{fast-import}}
\end{description}
\end{frame}
@@ -570,6 +570,52 @@ What does Git store?
\end{figure}
\end{frame}
+\subsection{Packfiles}
+
+\begin{frame}
+\frametitle{Packfiles}
+\begin{itemize}
+\item<2->{Tight Object Storage}
+\item<3->{``Packs'' Objects Together}
+\item<4->{Adds quick, indexed access to objects}
+\item<5->{Motivated for network and access efficiency}
+\begin{itemize}
+\item<5->{Not Disk Space Efficiency}
+\end{itemize}
+\item<6->{Created automatically}
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Creating Packfiles}
+\begin{itemize}
+\item<1->{\texttt{git-pack-objects}}
+\item<2->{\texttt{git-gc}}
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Creating Packfiles}
+\framesubtitle{\texttt{git-pack-objects}}
+\lstinputlisting[%
+ language=bash,
+ numbers=none,
+ basicstyle=\scriptsize{}\ttfamily{},
+ columns=fixed]{code/packfiles/1}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Creating Packfiles}
+\framesubtitle{\texttt{git-pack-objects}}
+\lstinputlisting[language=bash,numbers=none]{code/packfiles/2}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Creating Packfiles}
+\framesubtitle{\texttt{git-gc}}
+\lstinputlisting[language=bash,numbers=none]{code/packfiles/3}
+\end{frame}
+
\section{Using Git±}
\begin{frame}
\frametitle{Using Git±}
diff --git a/src/references.bib b/src/references.bib
index 11294df..a8df76e 100644
--- a/src/references.bib
+++ b/src/references.bib
@@ -42,3 +42,8 @@
@misc{website:linus_on_rebase,
howpublished="\url{http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html}"
}
+@misc{website:unpacking_git_packfiles,
+ howpublished="\url{https://codewords.recurse.com/issues/three/unpacking-git-packfiles/}",
+ author="Aditya Mukerjee",
+ title="Unpacking Git Packfiles"
+}