Mercurial > hg > mercurial-talk
changeset 42:9bc18f9d1f8e
Merged.
author | Martin Geisler <mg@lazybytes.net> |
---|---|
date | Thu, 20 Aug 2009 18:59:14 +0200 |
parents | 75744fde3008 (current diff) cf8d03f1b3f0 (diff) |
children | 7d35f4a23514 |
files | mercurial.tex |
diffstat | 1 files changed, 135 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial.tex +++ b/mercurial.tex @@ -739,15 +739,147 @@ \subsection{Changing History} \begin{frame}{Moving Changesets Around} - The \hgext{rebase} extension + \tikzstyle{rev}+=[on chain, join, minimum size=5mm] + \tikzset{node distance=4mm and 6mm} + + Tired of all those merges? Use the \hgext{rebase} extension! + \begin{itemize} + \item Revision graph: + + \begin{tikzpicture}[start chain] + \node[rev] {$A$}; + \node[rev] {$B$}; + \node[rev] {$C$}; + \begin{scope}[start branch=pulled] + \node<3->[rev,on chain=going below right] {$X$}; + \node<3->[rev] {$Y$}; + \node<3->[rev] {$Z$}; + \end{scope} + \node<2->[rev] {$D$}; + \node<2->[rev] {$E$}; + \end{tikzpicture} + + \item<4-> Merge: + + \begin{tikzpicture}[start chain] + \node[rev] {$A$}; + \node[rev] {$B$}; + \node[rev] {$C$}; + \begin{scope}[start branch=pulled] + \node[rev,on chain=going below right] {$X$}; + \node[rev] {$Y$}; + \node[rev] {$Z$}; + \end{scope} + \node[rev] {$D$}; + \node[rev] {$E$}; + \begin{scope}[continue branch=pulled] + \node[rev,on chain=going above right,join=with chain-end] {$M$}; + \end{scope} + \end{tikzpicture} + + \item<5-> Rebase: + + \begin{tikzpicture}[start chain] + \node[rev] {$A$}; + \node[rev] {$B$}; + \node[rev] {$C$}; + \begin{scope}[start branch=pulled] + \node[rev,on chain=going below right] {$X$}; + \node[rev] {$Y$}; + \node[rev] {$Z$}; + \node[rev] {$D'$}; + \node[rev] {$E'$}; + \end{scope} + \node[rev,join=by {black!30!white},opacity=0.3] {$D$}; + \node[rev,join=by {black!30!white},opacity=0.3] {$E$}; + \end{tikzpicture} + + \item<6-> Beware: public changes should never be rebased. + \end{itemize} \end{frame} \begin{frame}{Maintaining Patch Series} - The \hgext{mq} extension + The \hgext{mq} extension makes it easy to maintain a patch series: + + \begin{center} + \begin{tikzpicture}[start chain=stack going above, node distance=5mm] + \tikzstyle{rev}+=[on chain,join] + \tikzstyle{patch}=[rev, draw=green!50!black!50, + top color=white, bottom color=green!50!black!20] + \path[use as bounding box] (0,0) -- (0, 4.5); + + \node[on chain] {$\vdots$}; + \node[rev] {}; + \node<2->[patch] {code}; + \node<3->[patch] {test}; + \node<4->[patch] {doc}; + + \draw<5->[->] ([xshift=-1cm] stack-3.center) + -- node[left, anchor=mid east] {\hgcmd{qpush}} + ([xshift=-1cm] stack-5.center); + \draw<5->[->] ([xshift=1cm] stack-5.center) + -- node[right, anchor=mid west] {\hgcmd{qpop}} + ([xshift=1cm] stack-3.center); + \end{tikzpicture} + \end{center} + \end{frame} \begin{frame}{Editing History} - The \hgext{histedit} extension + \tikzstyle{rev}+=[on chain, minimum size=7mm] + \tikzstyle{squiggle}=[on chain, font=\large, red] + \tikzset{node distance=5mm} + + The \hgext{histedit} extension lets you + \begin{itemize}[<+->] + \item reorder changesets: + + \begin{tikzpicture}[start chain] + \node[rev] {$A$}; + \node[rev,join] {$B$}; + \node[rev,join] {$C$}; + \node[squiggle] {$\rightsquigarrow$}; + \node[rev] {$A$}; + \node[rev,join] {$C'$}; + \node[rev,join] {$B'$}; + \end{tikzpicture} + + \item fold changesets + + \begin{tikzpicture}[start chain] + \node[rev] {$A$}; + \node[rev,join] {$B$}; + \node[rev,join] {$C$}; + \node[squiggle] {$\rightsquigarrow$}; + \node[rev] {$A$}; + \node[rev,join] {$BC$}; + \end{tikzpicture} + + \item drop changesets + + \begin{tikzpicture}[start chain] + \node[rev] {$A$}; + \node[rev,join] {$B$}; + \node[rev,join] {$C$}; + \node[squiggle] {$\rightsquigarrow$}; + \node[rev] {$A$}; + \node[rev,join] {$C'$}; + \end{tikzpicture} + + \item edit changesets + + \begin{tikzpicture}[start chain] + \node[rev] {$A$}; + \node[rev,join] {$B$}; + \node[rev,join] {$C$}; + \node[squiggle] {$\rightsquigarrow$}; + \node[rev] {$A$}; + \node[rev,join] {$X$}; + \node[rev,join] {$B'$}; + \node[rev,join] {$C'$}; + \end{tikzpicture} + \end{itemize} + Inspired by \hgcmd{git rebase -i}. \end{frame} \subsection{Migrating History}