252
|
1 \begin{frame}{Vendor Branches in Mercurial} |
|
2 High-level view of vendor branches: |
|
3 \begin{center} |
|
4 \begin{tikzpicture}[start chain] |
|
5 \path[use as bounding box] (-2, 0) rectangle (8.5, 1); |
|
6 \tikzstyle{rev}+=[on chain, minimum size=4mm] |
|
7 \tikzstyle{libfoo}=[rev, draw=purple!50!black!50, top |
|
8 color=white, bottom color=purple!50!black!20] |
|
9 \tikzset{node distance=8mm and 10mm, on grid} |
|
10 \tikzstyle{join-se}=[out=0, in=90] |
|
11 \tikzstyle{join-ne}=[out=90, in=180] |
|
12 |
|
13 \node<1->[left=of chain-1, anchor=west, xshift=-1cm] {default:}; |
|
14 \node<1->[rev, join] {}; |
|
15 \node<1->[rev, join] (a) {}; |
|
16 \node<2->[libfoo, join=with a by join-ne, above right=of a] (v1) {}; |
|
17 %\draw<2->[thick] (v1.north) -- +(0, 0.2) node[tag,above] {libfoo 1.0}; |
|
18 |
|
19 \node<2->[above left=of chain-1, anchor=west, xshift=-1cm] {libfoo:}; |
|
20 \node<3->[rev, join=by join-se, join=with a, below right=of v1] {}; |
|
21 \node<4->[rev, join] {}; |
|
22 \node<5->[rev, join] (b) {}; |
|
23 \node<6->[libfoo, join=with v1, above right=of b] (v2) {}; |
|
24 %\draw<6->[thick] (v2.north) -- +(0, 0.2) node[tag,above] {libfoo 2.0}; |
|
25 \node<7->[rev, join=by join-se, join=with b, below right=of v2] {}; |
|
26 \node<8->[rev, join] {}; |
|
27 \end{tikzpicture} |
|
28 \end{center} |
|
29 |
|
30 \onslide<9-> |
|
31 |
|
32 This workflow lets you: |
|
33 \begin{itemize} |
|
34 \item clearly distinguish between upstream code and your code |
|
35 \item directly modify libraries in your codebase |
|
36 \item<10-> Mercurial knows exactly what to merge |
|
37 \end{itemize} |
|
38 \end{frame} |