view talk.tex @ 6:7072c39785c9

Basic evolve commands
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Sat, 08 Mar 2014 19:12:15 -0500
parents 627f34ce7c58
children edc5ae89b6ea
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}