Mercurial > evolve-talk
view talk.tex @ 9:39800c8f0532
Add initial session replay
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Sat, 08 Mar 2014 19:35:00 -0500 |
parents | edc5ae89b6ea |
children | c48ed0e2ab41 |
line wrap: on
line source
%%% BEGIN BEAMER PREAMBLE %%% \documentclass[green]{beamer} \usepackage{bm, fourier, anyfontsize} \mode<presentation> { \usetheme{boxes} \usecolortheme{crane} } \beamertemplatenavigationsymbolsempty \usepackage{times} %%% END BEAMER PREAMBLE %%% %%% BEGIN METADATA %%% \author{Jordi G. H. $\langle$jordigh@octave.org$\rangle$ \\ ~ \\ hg clone http://hg.octave.org/evolve-talk} \title{Changeset Evolution in Mercurial} \subtitle{Edit commits collaboratively!} \date{} %%% END METADATA%%% \begin{document} \begin{frame} \titlepage \end{frame} \begin{frame} {\Large \textbf{Problems that Evolve is trying to solve}} \pause \textbf{Problem 1}: Recovering from upstream rewrite (rebase) \pause \begin{quote} Rebasing (or any other form of rewriting) a branch that others have based work on is a bad idea: anyone downstream of it is forced to manually fix their history. \end{quote} ... from git-rebase(7) \end{frame} \begin{frame} \begin{center} \pgfimage[height=3in]{rebase1} \end{center} \end{frame} \begin{frame} \begin{center} \pgfimage[height=3in]{rebase2} \end{center} \end{frame} \begin{frame} \begin{center} \pgfimage[height=3in]{ohcrap} \end{center} \end{frame} \begin{frame} \begin{center} \pgfimage[height=3in]{rebase3} \end{center} \end{frame} \begin{frame} \begin{center} \pgfimage[height=3in]{rebase4} \end{center} \end{frame} \begin{frame} \begin{center} \pgfimage[height=3.69in]{git-rebase} \end{center} \end{frame} \begin{frame} {\Large \textbf{Problems that Evolve is trying to solve}} \textbf{Problem 2}: Some commits are historical record, should not be rewritten \pause \begin{table} \pgfimage[width=4in]{histedit} \end{table} \end{frame} \begin{frame} {\Large \textbf{Problems that Evolve is trying to solve}} \textbf{Problem 3}: Safely sharing rewritten commits with remote repos \pause \begin{table} \pgfimage[width=4in]{lol-jenkins} \end{table} \end{frame} \begin{frame} \begin{table} \pgfimage[height=3in]{git-force-push} \end{table} \end{frame} \begin{frame} {\Large \textbf{Problems that Evolve is trying to solve}} \begin{enumerate} \item Recovering from upstream rewrite (rebase) \item Some commits are historical record, should not be rewritten \item Safely sharing rewritten commits with remote repos \end{enumerate} \end{frame} \begin{frame} \begin{table} \pgfimage[height=2in]{hg-logo} \end{table} Mercurial Evolve to the rescue! \end{frame} \begin{frame} {\Large \textbf{Evolve basics}} When you enable Evolve, you get a few extra commands: \begin{columns} \column{0.3 \textwidth} \begin{itemize} \item \texttt{amend} \item \texttt{fold} \item \texttt{gdown} \item \texttt{gup} \item \texttt{prune} \item \texttt{uncommit} \end{itemize} \pause \column{0.7 \textwidth} \begin{itemize} \item \texttt{hg commit -{}-amend} \item can be done with \texttt{hg histedit} \item \texttt{hg update -r 'parents()'} \item \texttt{hg update -r 'children()'} \item \texttt{hg strip} \item \texttt{hg strip -{}-keep} \end{itemize} \end{columns} \begin{center} {\large These are very scriptable!} \end{center} \end{frame} \begin{frame} {\Large \textbf{Evolve basics}} For reference, these are the rough git equivalents: \begin{columns} \column{0.3 \textwidth} \begin{itemize} \item \texttt{amend} \item \texttt{fold} \item \texttt{gdown} \item \texttt{gup} \item \texttt{prune} \item \texttt{uncommit} \end{itemize} \column{0.7 \textwidth} \begin{itemize} \item \texttt{git commit -{}-amend} \item can be done with \texttt{git rebase -i} \item \texttt{git checkout HEAD\^} \item Nothing simple, must use log or reflog \item \texttt{git reset -{}-hard HEAD\^} \item \texttt{git reset -{}-soft HEAD\^} \end{itemize} \end{columns} \end{frame} \begin{frame} {\Large \textbf{Evolve's core}} There's also a shiny, new command that does magic: \begin{center} {\Large \texttt{hg evolve}} \end{center} \begin{table} \pgfimage[height=2in]{logo-evolve} \end{table} \begin{center} \begin{itemize} \pause \item Basically, automatically fixes any problems \item Rebases back to upstream and more! \end{itemize} \end{center} \end{frame} \begin{frame} \begin{center} Let's see evolve in action! \fontsize{68}{80}\selectfont \lefthand \end{center} \end{frame} \end{document}