annotate query-languages.tex @ 343:a4b368f0b3f0

Explain that diff applies min/max
author Martin Geisler <mg@aragost.com>
date Wed, 20 Jun 2012 17:11:20 +0200
parents 9c50a8f94f94
children 0fac0c3cf747
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
1 \documentclass[t,noamsthm,xcolor=dvipsnames]{beamer}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
2 \input{preambel}
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
3 \title{Mercurial's Query Languages}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
4 \author{Martin Geisler
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
5 \texorpdfstring{\\$\langle$\texttt{mg@aragost.com}$\rangle$}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
6 {<mg@aragost.com>}}
338
9102d0f0f67a Update title and date for CCDC
Martin Geisler <mg@aragost.com>
parents: 318
diff changeset
7 \date{CCDC, Cambridge\\June 25th--27th, 2012}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
8
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
9 \begin{document}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
10
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
11 \begin{frame}[plain]
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
12 \maketitle
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
13 \begin{tikzpicture}[overlay, remember picture]
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
14 \node[above right] at (current page.south west)
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
15 {\includegraphics[height=3cm]{pixelman-front}};
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
16 \end{tikzpicture}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
17 \end{frame}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
18
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
19 \begin{frame}{Outline}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
20 \tableofcontents
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
21 \end{frame}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
22
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
23 \section{Introduction}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
24
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
25 \begin{frame}[fragile]{Confusing Histories}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
26 Big projects can give rise to a branchy history:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
27 \begin{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
28 \item several concurrent branches
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
29 \item many developers pushing changes
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
30 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
31
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
32 \pause
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
33
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
34 Mercurial help you to cut away the unnecessary fluff:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
35 \begin{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
36 \item<2-> Revision sets selects revisions (Mercurial 1.6):
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
37 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
38 $ hg log -r "branch('stable') and user('Martin')"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
39 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
40 Can be used in all places where Mercurial expects revisions
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
41
339
f4434e29a50d Filesets was introduced in Mercurial 1.9
Martin Geisler <mg@aragost.com>
parents: 338
diff changeset
42 \item<3-> File sets selects files in revisions (Mercurial 1.9):
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
43 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
44 $ hg revert "set:added() and size('>20MB')"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
45 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
46 Can be used in all places where Mercurial expects file names
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
47
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
48 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
49 \end{frame}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
50
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
51 \begin{frame}[fragile]{Flexibility}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
52 The query languages lets you solve hard problems:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
53 \begin{itemize}[<+->]
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
54 \item Imagine you have a dirty working copy:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
55 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
56 $ hg status
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
57 M index.html
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
58 A logo.png
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
59 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
60 But how can you see the diff of \path{index.html} only?
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
61
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
62 \item Easy! You use your nifty Unix shell:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
63 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
64 $ hg diff $(hg status --no-status --modified)
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
65 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
66
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
67 \item With file sets you can do
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
68 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
69 $ hg diff "set:modified()"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
70 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
71 and it will work on all platforms
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
72
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
73 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
74 \end{frame}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
75
317
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
76 \begin{frame}[fragile]{Implementation}
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
77 When a revision set is evaluated it is:
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
78 \begin{description}[<+->]
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
79 \item[tokenized:] split input into operators, symbols, strings
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
80 \item[parsed:] build parse tree based on operator precedence
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
81 \item[optimized:] reorders parse tree to evaluate cheap parts first:
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
82 \begin{lstlisting}
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
83 contains("README") and 1.0::1.5
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
84 \end{lstlisting}
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
85 starts with a manifest-based query --- reorder to:
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
86 \begin{lstlisting}
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
87 1.0::1.5 and contains("README")
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
88 \end{lstlisting}
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
89 \item[executed:] go through tree and evaluate predicates
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
90 \end{description}
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
91 \end{frame}
c6ee843b4a71 Move implementation slide up front
Martin Geisler <mg@aragost.com>
parents: 316
diff changeset
92
301
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
93 \begin{frame}[fragile]{Quoting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
94 How to handle special characters:
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
95 \begin{itemize}[<+->]
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
96 \item You will need to quote your queries on the command line:
301
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
97 \begin{lstlisting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
98 $ hg log -r parents()
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
99 zsh: parse error near `()'
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
100 \end{lstlisting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
101
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
102 \item Strings in queries can be in single- or double-quotes:
301
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
103 \begin{lstlisting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
104 $ hg log -r "user('Martin')"
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
105 \end{lstlisting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
106
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
107 \item Escape characters are supported
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
108 \begin{lstlisting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
109 $ hg log -r "keyword('first line\nsecond line')"
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
110 \end{lstlisting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
111
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
112 \item Use a raw string to disable the escape characters:
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
113 \begin{lstlisting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
114 $ hg log -r "grep(r'Bug\s*\d+')"
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
115 \end{lstlisting}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
116
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
117 \end{itemize}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
118 \end{frame}
027862d2fec9 Slide on quoting
Martin Geisler <mg@lazybytes.net>
parents: 298
diff changeset
119
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
120 \section{Revision Sets}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
121
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
122 \subsection{Predicates}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
123
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
124 \begin{frame}[fragile]{Predicates}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
125 Predicates select changesets for inclusion in the resulting set:
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
126 \begin{itemize}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
127 \item \cmd{closed()}, \cmd{head()}, \cmd{merge()}: simple changeset properties
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
128
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
129 \item \cmd{author(string)}, \cmd{date(interval)}: search by user
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
130 name or by commit date
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
131
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
132 \begin{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
133 $ hg log -r "author('Martin') and merge()"
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
134 \end{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
135
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
136 \item \cmd{grep(regex)}, \cmd{keyword(string)}: search in commit
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
137 message, user name, changed file names for a regular expression or
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
138 a substring
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
139
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
140 %\item \cmd{bisected(string)}: changesets marked good/bad/skip while
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
141 % bisecting
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
142
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
143 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
144 \end{frame}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
145
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
146 \begin{frame}[fragile]{Matching by Files in Changesets}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
147 Matching by how a file changed:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
148 \begin{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
149 \item \cmd{adds(pattern)}: a file matching pattern was added
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
150 \item \cmd{modifies(pattern)}: a file matching pattern was modified
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
151 \item \cmd{removes(pattern)}: a file matching pattern was removed
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
152 \item<2-> \cmd{file(pattern)}: combination of all the above
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
153 \item<3-> \cmd{contains(pattern)}: a file matching pattern was present
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
154 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
155 \end{frame}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
156
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
157 \subsection{Functions}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
158
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
159 \begin{frame}[fragile]{Following the Changeset Graph}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
160 A common task is to follow the graph from a particular changeset:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
161 \begin{itemize}
341
8e4c6ccc7cdb Shorten items to make them fit on a single line
Martin Geisler <mg@aragost.com>
parents: 340
diff changeset
162 \item \cmd{::Y} or \cmd{ancestors(Y)}: ancestors of changesets in Y
8e4c6ccc7cdb Shorten items to make them fit on a single line
Martin Geisler <mg@aragost.com>
parents: 340
diff changeset
163 \item \cmd{X::} or \cmd{descendants(X)}: descendants of changesets
8e4c6ccc7cdb Shorten items to make them fit on a single line
Martin Geisler <mg@aragost.com>
parents: 340
diff changeset
164 in X
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
165 \item \cmd{X::Y}: a combination of the above, finding changesets between X and Y
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
166 \end{itemize}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
167
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
168 \pause
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
169
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
170 Changes that need to be merged into the default branch:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
171 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
172 $ hg log -r "ancestors(stable) - ancestors(default)"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
173 $ hg log -r "::stable - ::default"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
174 \end{lstlisting}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
175
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
176 \end{frame}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
177
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
178 \begin{frame}[fragile]{Family Relations}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
179
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
180 \begin{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
181 \item \cmd{ancestor(single, single)}: greatest common ancestor of
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
182 the two changesets. Used to find out what needs to be merged in a
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
183 merge between X and Y:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
184 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
185 $ hg log -r "ancestor(X, Y)::Y"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
186 \end{lstlisting}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
187
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
188 \item \cmd{children(set)}, \cmd{parents([set])}: set of all children/parents of set
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
189
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
190 \item \cmd{heads(set)}, \cmd{roots(set)}: changesets from set with
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
191 no children/parents in set
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
192
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
193 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
194 \end{frame}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
195
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
196 \begin{frame}[fragile]{Parents and Grand Parents}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
197 Going from a changeset to the parent changeset is easy:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
198 \begin{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
199 \item \cmd{p1([set])}, \cmd{p2([set])}: the first/second parent of
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
200 changesets in set or of the working copy if no set is given
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
201
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
202 \item \cmd{x\textasciicircum}, \cmd{x\textasciicircum 2}: the
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
203 first/second parent of \cmd x
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
204
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
205 \item \cmd{x\textasciitilde n}: the $n$'th first ancestor of \cmd x,
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
206 \cmd{x\textasciitilde 0} is \cmd x, \cmd{x\textasciitilde 3} is
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
207 \cmd{x\textasciicircum\textasciicircum\textasciicircum}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
208 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
209
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
210 To see both sides of a merge changeset M use
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
211 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
212 $ hg diff -r "p1(M):M" && hg diff -r "p2(M):M"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
213 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
214 or the shorter
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
215 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
216 $ hg diff -c M && hg diff -r "M^2:M"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
217 \end{lstlisting}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
218
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
219 %\item \cmd{follow([file])}: follow working copy parents or follow a
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
220 % file history across renames (like \cmd{hg log -f})
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
221 \end{frame}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
222
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
223 \begin{frame}[fragile]{The Next Push}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
224 The \cmd{hg outgoing} command tells what will be pushed, and so does
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
225 this function:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
226 \begin{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
227 \item \cmd{outgoing([path])}: changesets not in the destination
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
228 repository
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
229 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
230
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
231 \pause
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
232
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
233 It is now easy to see what you will push as a single diff:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
234 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
235 $ hg diff -r "outgoing()"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
236 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
237 % \cmd{hg diff} extracts the first/last revision using \cmd{min()} and
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
238 % \cmd{max()}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
239
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
240 \pause
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
241
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
242 It is also easy to reset a repository:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
243 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
244 $ hg strip "outgoing()"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
245 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
246 People familiar with Git will know this as
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
247 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
248 $ git reset --hard origin/master
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
249 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
250
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
251 \end{frame}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
252
340
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
253 \begin{frame}[fragile]{The Next Push (Offline!)}
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
254 With the introduction of \alert{phases} (Mercurial 2.1) you can use:
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
255 \begin{lstlisting}
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
256 $ hg log -r "not public()"
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
257 \end{lstlisting}
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
258 to see unpublished changes without network communication.
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
259
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
260 Equivalent to:
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
261 \begin{lstlisting}
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
262 $ hg log -r "draft() or secret()"
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
263 \end{lstlisting}
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
264 \end{frame}
6d043c1df267 Mention revsets related to phases
Martin Geisler <mg@aragost.com>
parents: 339
diff changeset
265
316
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
266 %\begin{frame}[fragile]{Handling Missing Revisions}
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
267 % If you don't know if a given revision is present, then use:
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
268 % \begin{itemize}
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
269 % \item \cmd{present(set)}: prevents lookup errors if a revision in
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
270 % set is not found. Used like
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
271 %\begin{lstlisting}
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
272 %$ hg log -r "head() and (present('bad'):: - present('fix')::)"
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
273 %\end{lstlisting}
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
274 % where bad is a known buggy changeset and fix is a bugfix. Without
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
275 % the use of \cmd{present()}, an error would be raised if the bugfix
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
276 % is not yet in the repository.
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
277 % \end{itemize}
d03248ef91aa Removed unimportant slide
Martin Geisler <mg@aragost.com>
parents: 312
diff changeset
278 %\end{frame}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
279
343
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
280 \begin{frame}[fragile]{Final Touches on Your Query}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
281 Trimming, cutting, manipulating the set:
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
282 \begin{itemize}[<+->]
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
283 \item \cmd{max(set)}, \cmd{min(set)}: the changeset with
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
284 minimum/maximum revision number in the set
343
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
285
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
286 Commands that need two revisions apply this as needed:
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
287 \begin{lstlisting}
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
288 $ hg diff -r "not public()"
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
289 \end{lstlisting}
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
290 behaves like
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
291 \begin{lstlisting}
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
292 $ hg diff -r "min(not public())" -r "max(not public())"
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
293 \end{lstlisting}
a4b368f0b3f0 Explain that diff applies min/max
Martin Geisler <mg@aragost.com>
parents: 342
diff changeset
294
342
9c50a8f94f94 Sets are normally not ordered, but revsets are
Martin Geisler <mg@aragost.com>
parents: 341
diff changeset
295 \item \cmd{reverse(set)}: the ``set'' is ordered; this reverses it
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
296 \item \cmd{limit(set, n)}, \cmd{last(set, n)}: the first/last
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
297 $n$ changesets
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
298 \item \cmd{sort(set[, [-]key...])}: sorting the set by revision
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
299 number, branch name, changeset message, user name, or date
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
300 \end{itemize}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
301 \end{frame}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
302
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
303 \begin{frame}[fragile]{Solving Ambiguities}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
304 When you do \cmd{hg log -r "foo"}, Mercurial checks
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
305 \begin{enumerate}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
306 %\item revision number
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
307 %\item full changeset ID
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
308 \item is \cmd{foo} a bookmark?
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
309 \item is \cmd{foo} a tag?
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
310 \item is \cmd{foo} a branch name?
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
311 %\item partial changeset ID
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
312 \end{enumerate}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
313 First match wins.
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
314
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
315 \pause
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
316
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
317 You can override this using predicates:
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
318 \begin{itemize}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
319 %\item \cmd{rev(number)}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
320 %\item \cmd{id(hash)}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
321 \item \cmd{bookmark([name])}, \cmd{tag([name])}: the changeset with
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
322 the given bookmark or tag, or all bookmarked/tagged changesets
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
323 \item \cmd{branch(name)}: changesets on the given branch
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
324 \item \cmd{branch(set)}: changesets on the branches of the given set,
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
325 normally used with a single changeset:
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
326 \begin{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
327 $ hg log -r "branch(tip)"
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
328 \end{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
329 \end{itemize}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
330 \end{frame}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
331
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
332 \subsection{Operators}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
333
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
334 \begin{frame}{Operators}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
335 You can combine two revision sets using:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
336 \begin{itemize}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
337
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
338 \item \cmd{x and y} or \cmd{x \& y}: changesets in both \cmd x and
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
339 \cmd y
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
340
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
341 \item \cmd{x or y} or \cmd{x | y} or \cmd{x + y}: changesets in
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
342 either \cmd x or \cmd y
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
343
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
344 \item \cmd{x - y}: changesets in \cmd x but not in \cmd y
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
345
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
346 \end{itemize}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
347 \end{frame}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
348
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
349 \begin{frame}[fragile]{Examples}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
350 \begin{itemize}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
351
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
352
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
353 \item Heads on the current branch:
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
354 \begin{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
355 $ hg log -r "head() and branch(.)"
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
356 \end{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
357
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
358 Closed heads:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
359 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
360 $ hg log -r "head() and closed()"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
361 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
362
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
363 Reopened branches:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
364 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
365 $ hg log -r "closed() and not head()"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
366 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
367
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
368 \item Open heads on the current branch:
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
369 \begin{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
370 $ hg log -r "head() and branch(.) and not closed()"
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
371 \end{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
372
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
373 \item Bugfixes that are not in a tagged release:
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
374 \begin{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
375 $ hg log -r "keyword(bug) and not ::tagged()"
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
376 \end{lstlisting}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
377
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
378
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
379 \end{itemize}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
380 \end{frame}
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
381
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
382
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
383 \section{File Sets}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
384
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
385 \begin{frame}{Selecting Files}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
386 File sets let you:
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
387 \begin{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
388 \item select files from working copy
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
389 \item select files from old revisions
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
390 \end{itemize}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
391 Hopefully part of Mercurial 1.9 (July) or 2.0 (November)
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
392 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
393
318
d4fb0c45e2be Add subsections
Martin Geisler <mg@aragost.com>
parents: 317
diff changeset
394 \subsection{Working Copy Status and Path}
d4fb0c45e2be Add subsections
Martin Geisler <mg@aragost.com>
parents: 317
diff changeset
395
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
396 \begin{frame}[fragile]{Working Copy Status}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
397 The proposed predicates are:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
398 \begin{itemize}[<+->]
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
399
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
400 \item \cmd{modified()}, \cmd{added()}, \cmd{removed()},
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
401 \cmd{deleted()}, \cmd{unknown()}, \cmd{ignored()}, \cmd{clean()}:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
402 status flags
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
403
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
404 \item \cmd{copied()}: copied files, quite hard to extract today
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
405
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
406 \item \cmd{ignorable()}: tracked files that \emph{would} be ignored
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
407
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
408 \item \cmd{tracked()}: all tracked files
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
409
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
410 \item \cmd{conflicted()}: like \cmd{hg resolve --list} after a merge
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
411
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
412 \end{itemize}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
413
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
414 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
415
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
416 \begin{frame}[fragile]{Searching by Path}
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
417 We can replace the \cmd{find} Unix command:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
418 \begin{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
419 \item \cmd{glob(P)} instead of \cmd{find -path P}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
420 \item \cmd{regex(P)} instead of \cmd{find -regex P}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
421 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
422 Remember that this also works on old revisions:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
423 \begin{lstlisting}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
424 $ hg status -r 1.0::2.0 "set:glob(src/*.h)"
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
425 A src/foo.h
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
426 M src/bar.h
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
427 \end{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
428 This shows that \path{foo.h} is a new header file in version 2.0.
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
429 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
430
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
431 \begin{frame}{File Type Predicates}
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
432 Other \cmd{find}-like predicates will be:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
433 \begin{itemize}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
434 \item \cmd{executable()}, \cmd{symlink()}: file type
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
435 \item \cmd{perm()}, \cmd{owner()}: file permissions
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
436 \item \cmd{date()}, \cmd{size()}: other file meta data
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
437 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
438 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
439
318
d4fb0c45e2be Add subsections
Martin Geisler <mg@aragost.com>
parents: 317
diff changeset
440 \subsection{File Content}
d4fb0c45e2be Add subsections
Martin Geisler <mg@aragost.com>
parents: 317
diff changeset
441
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
442 \begin{frame}[fragile]{Looking Into Files}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
443 Matching files by content:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
444 \begin{itemize}[<+->]
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
445 \item \cmd{grep()}: like the Unix \cmd{grep} we all love
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
446 \item \cmd{contains()}: simple sub-string matching
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
447 \item \cmd{binary()}, \cmd{text()}: does file contain a NUL byte?
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
448 \begin{lstlisting}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
449 $ hg add "set:unknown() and not binary()"
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
450 \end{lstlisting}
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
451
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
452 \item \cmd{decodes()}: check if file can be decoded with the given
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
453 character set, such as UTF-8, UTF-16, \dots
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
454
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
455 Lets you find mistakes:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
456 \begin{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
457 $ hg status --all "set:glob('**.py') and not decodes('UTF-8')"
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
458 C src/foo.py
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
459 \end{lstlisting}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
460
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
461 \item \cmd{eol()}: line-ending type, Unix (LF) or DOS (CRLF)
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
462 \end{itemize}
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
463 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
464
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
465 \begin{frame}{Adding New Predicates}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
466 The feature will be extensible, some possible future extensions:
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
467 \begin{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
468 \item \cmd{magic()}: recognize files based on file content, like the
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
469 \cmd{file} program in Unix
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
470 \item \cmd{locked()}: files locked for exclusive access by my
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
471 \ext{lock} extension
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
472 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
473 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
474
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
475 \section{Conclusion}
295
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
476
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
477 \begin{frame}{Conclusion}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
478 In short:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
479 \begin{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
480 \item revision sets lets you zoom in on the right part of the history
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
481 \item file sets will let you pick out the relevant files
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
482 \item both mechanisms are completely general
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
483 \end{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
484
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
485 \pause
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
486
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
487 Please get in touch if you have more questions:
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
488 \begin{itemize}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
489 \item Email: \curl{mg@aragost.com}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
490 \item IRC: \curl{mg} in \curl{\#mercurial} on \curl{irc.freenode.net}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
491 \end{itemize}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
492
302
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
493 \pause
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
494
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
495 \begin{center}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
496 \begin{tikzpicture}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
497 \tikzstyle{every node}=[font=\Huge\bfseries]
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
498 \node[black, shift={(0.8pt, -0.8pt)}] {Thank you!};
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
499 \node[orange!50!red] {Thank you!};
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
500 \end{tikzpicture}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
501 \end{center}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
502 \end{frame}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
503
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
504 %\appendix
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
505 %\newcounter{finalframe}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
506 %\setcounter{finalframe}{\value{framenumber}}
78a5a27609a5 Introduction, conclussion, more consistent
Martin Geisler <mg@lazybytes.net>
parents: 301
diff changeset
507 %\setcounter{framenumber}{\value{finalframe}}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
508
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
509 \end{document}
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
510
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
511 % LocalWords: changeset changesets