Mercurial > hg > mercurial-talk
changeset 158:1def7cfae69f
Split off slides on underlying history model.
author | Martin Geisler <mg@aragost.com> |
---|---|
date | Tue, 27 Apr 2010 09:20:28 +0200 (2010-04-27) |
parents | 8f625aa11c10 |
children | 14243749c5aa |
files | immutable-history.tex mercurial.tex model.tex |
diffstat | 3 files changed, 64 insertions(+), 63 deletions(-) [+] |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/immutable-history.tex @@ -0,0 +1,27 @@ +\begin{frame}{Immutable History} + SHA-1 hashes as changeset IDs have some consequences: + \begin{itemize} + \item a changeset ID is a hash of the entire history + \item changing history changes subsequent changesets + \item history is immutable, you can only make new history: + \bigskip + + \begin{tikzpicture}[start chain] + \tikzstyle{rev}+=[on chain, join, minimum size=6mm] + \tikzset{node distance=10mm and 12mm, on grid} + \node[rev] {$A$}; + \node[rev] {$B$}; + + \begin{scope}[start branch=changed] + \node<2->[rev,on chain=going below right] {$C'$}; + \node<2->[rev] {$D'$}; + \node<2->[rev] {$E'$}; + \end{scope} + + \only<3>{\tikzstyle{rev}+=[join=by {black!30!white},opacity=0.3]} + \node[rev] {$C$}; + \node[rev] {$D$}; + \node[rev] {$E$}; + \end{tikzpicture} + \end{itemize} +\end{frame}
--- a/mercurial.tex +++ b/mercurial.tex @@ -135,69 +135,8 @@ \subsection{The Underlying Model} -\begin{frame}{The Underlying Model} - A Mercurial changeset conceptually consist of: - \begin{itemize} - \item 0--2 parent changeset IDs: - \begin{itemize} - \item root changeset has no parents - \item normal changesets have one parent - \item merge changesets have two parents - \end{itemize} - \item date, username, commit message - \item difference from first parent changeset - \item changeset ID is computed as SHA-1 hash of the above - \item makes it impossible to inject \alert{malicious code} on server - \end{itemize} - - \begin{center} - \begin{tikzpicture}[start chain] - \tikzstyle{rev}+=[on chain, minimum size=5mm, font=\small] - \tikzset{node distance=8mm and 10mm, on grid} - - \node[rev,join] {}; - \node[rev,join] {}; - \node[rev,join] (x) {}; - \node[rev,join, above right=of x] (y) {}; - \node[rev,join] (a) {}; - \node[rev,join=with x, below right=of x] (z) {}; - \node[rev,join] {}; - \node[rev,join] {}; - \node[rev,join] (w) {}; - \node[rev,join, above right=of w] (b) {}; - \node[rev,join] {}; - \draw[->] (a) to[out=0, in=150] (b); - \end{tikzpicture} - \end{center} -\end{frame} - -\begin{frame}{Immutable History} - SHA-1 hashes as changeset IDs have some consequences: - \begin{itemize} - \item a changeset ID is a hash of the entire history - \item changing history changes subsequent changesets - \item history is immutable, you can only make new history: - \bigskip - - \begin{tikzpicture}[start chain] - \tikzstyle{rev}+=[on chain, join, minimum size=6mm] - \tikzset{node distance=10mm and 12mm, on grid} - \node[rev] {$A$}; - \node[rev] {$B$}; - - \begin{scope}[start branch=changed] - \node<2->[rev,on chain=going below right] {$C'$}; - \node<2->[rev] {$D'$}; - \node<2->[rev] {$E'$}; - \end{scope} - - \only<3>{\tikzstyle{rev}+=[join=by {black!30!white},opacity=0.3]} - \node[rev] {$C$}; - \node[rev] {$D$}; - \node[rev] {$E$}; - \end{tikzpicture} - \end{itemize} -\end{frame} +\include{model} +\include{immutable-history} \subsection{Workflows}
new file mode 100644 --- /dev/null +++ b/model.tex @@ -0,0 +1,35 @@ +\begin{frame}{The Underlying Model} + A Mercurial changeset conceptually consist of: + \begin{itemize} + \item 0--2 parent changeset IDs: + \begin{itemize} + \item root changeset has no parents + \item normal changesets have one parent + \item merge changesets have two parents + \end{itemize} + \item date, username, commit message + \item difference from first parent changeset + \item changeset ID is computed as SHA-1 hash of the above + \item makes it impossible to inject \alert{malicious code} on server + \end{itemize} + + \begin{center} + \begin{tikzpicture}[start chain] + \tikzstyle{rev}+=[on chain, minimum size=5mm, font=\small] + \tikzset{node distance=8mm and 10mm, on grid} + + \node[rev,join] {}; + \node[rev,join] {}; + \node[rev,join] (x) {}; + \node[rev,join, above right=of x] (y) {}; + \node[rev,join] (a) {}; + \node[rev,join=with x, below right=of x] (z) {}; + \node[rev,join] {}; + \node[rev,join] {}; + \node[rev,join] (w) {}; + \node[rev,join, above right=of w] (b) {}; + \node[rev,join] {}; + \draw[->] (a) to[out=0, in=150] (b); + \end{tikzpicture} + \end{center} +\end{frame}