Mercurial > hg > mercurial-talk
annotate revset-talk.tex @ 298:6420e2bdb651
More rough slides on revsets
author | Martin Geisler <mg@aragost.com> |
---|---|
date | Tue, 07 Jun 2011 17:37:10 +0200 |
parents | 03a869b83c70 |
children | 027862d2fec9 |
rev | line source |
---|---|
294 | 1 \documentclass[t,noamsthm,xcolor=dvipsnames]{beamer} |
2 \input{preambel} | |
296 | 3 \title{Mercurial's Query Languages} |
294 | 4 \author{Martin Geisler |
5 \texorpdfstring{\\$\langle$\texttt{mg@aragost.com}$\rangle$} | |
6 {<mg@aragost.com>}} | |
7 \date{gearconf 2011} | |
8 | |
9 \begin{document} | |
10 | |
11 \begin{frame}[plain] | |
12 \maketitle | |
13 \begin{tikzpicture}[overlay, remember picture] | |
14 \node[above right] at (current page.south west) | |
15 {\includegraphics[height=3cm]{pixelman-front}}; | |
16 \end{tikzpicture} | |
17 \end{frame} | |
18 | |
19 \begin{frame}{Outline} | |
20 \tableofcontents | |
21 \end{frame} | |
22 | |
23 \section{Introduction} | |
24 | |
296 | 25 \section{Revision Sets} |
26 | |
27 \subsection{Predicates} | |
294 | 28 |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
29 \begin{frame}[fragile]{Predicates} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
30 Predicates select changesets for inclusion in the resulting set: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
31 \begin{itemize} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
32 \item Changeset metadata: \cmd{closed()}, \cmd{head()}, |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
33 \cmd{merge()}, \cmd{author(string)}, \cmd{date(interval)}, |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
34 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
35 Closed heads: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
36 \begin{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
37 $ hg log -r "head() and closed()" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
38 \end{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
39 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
40 Reopened branches: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
41 \begin{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
42 $ hg log -r "closed() and not head()" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
43 \end{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
44 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
45 \begin{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
46 $ hg log -r "author('Martin') and merge()" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
47 \end{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
48 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
49 \end{itemize} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
50 |
294 | 51 bisected(string) |
52 grep(regex) | |
53 keyword(string) | |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
54 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
55 \cmd{adds(pattern)} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
56 \cmd{contains(pattern)} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
57 \cmd{file(pattern)} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
58 \cmd{filelog(pattern)} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
59 \cmd{modifies(pattern)} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
60 \cmd{removes(pattern)} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
61 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
62 |
294 | 63 \end{frame} |
64 | |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
65 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
66 |
294 | 67 \begin{frame}{Functions} |
68 ancestor(single, single) | |
69 ancestors(set) | |
70 children(set) | |
71 descendants(set) | |
72 follow([file]) | |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
73 |
294 | 74 heads(set) |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
75 |
294 | 76 outgoing([path]) |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
77 |
294 | 78 p1([set]) |
79 p2([set]) | |
80 parents([set]) | |
81 present(set) | |
82 roots(set) | |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
83 \end{frame} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
84 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
85 \begin{frame}{Final Touches on Your Query} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
86 Trimming, cutting, manipulating the set: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
87 \begin{itemize}[<+->] |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
88 \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
|
89 minimum/maximum revision number in the set |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
90 \item \cmd{reverse(set)}: the set is an ordered set; this reverses |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
91 it |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
92 \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
|
93 $n$ changesets |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
94 \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
|
95 number, branch name, changeset message, user name, or date |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
96 \end{itemize} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
97 \end{frame} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
98 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
99 \begin{frame}[fragile]{Solving Ambiguities} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
100 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
|
101 \begin{enumerate} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
102 %\item revision number |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
103 %\item full changeset ID |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
104 \item is \cmd{foo} a bookmark? |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
105 \item is \cmd{foo} a tag? |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
106 \item is \cmd{foo} a branch name? |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
107 %\item partial changeset ID |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
108 \end{enumerate} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
109 First match wins. |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
110 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
111 You can override this using predicates: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
112 \begin{itemize}[<+->] |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
113 %\item \cmd{rev(number)} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
114 %\item \cmd{id(hash)} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
115 \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
|
116 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
|
117 \item \cmd{branch(name)}: changesets on the given branch |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
118 \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
|
119 normally used with a single changeset: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
120 \begin{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
121 $ hg log -r "branch(tip)" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
122 \end{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
123 \end{itemize} |
294 | 124 \end{frame} |
125 | |
296 | 126 \subsection{Operators} |
294 | 127 |
128 \begin{frame}{Operators} | |
129 | |
130 \end{frame} | |
131 | |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
132 \begin{frame}[fragile]{Examples} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
133 \begin{itemize} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
134 \item Changes that need to be merged into the default branch: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
135 \begin{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
136 $ hg log -r "ancestors(stable) - ancestors(default)" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
137 $ hg log -r "::stable - ::default" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
138 \end{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
139 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
140 \item Heads on the current branch: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
141 \begin{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
142 $ hg log -r "head() and branch(.)" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
143 \end{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
144 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
145 \item Open heads on the current branch: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
146 \begin{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
147 $ hg log -r "head() and branch(.) and not closed()" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
148 \end{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
149 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
150 \item Bugfixes that are not in a tagged release: |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
151 \begin{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
152 $ hg log -r "keyword(bug) and not ::tagged()" |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
153 \end{lstlisting} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
154 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
155 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
156 \end{itemize} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
157 \end{frame} |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
158 |
294 | 159 |
296 | 160 \section{File Sets} |
161 | |
162 \begin{frame}{Selecting Files} | |
163 \begin{itemize} | |
164 \item select files from working copy | |
165 \item select files from old revisions | |
166 \item might be part of Mercurial 1.9 (July) or 2.0 (November) | |
167 \end{itemize} | |
168 \end{frame} | |
169 | |
170 \begin{frame} | |
171 File sets give an amazing flexibility. | |
172 \end{frame} | |
173 | |
174 \begin{frame}[fragile]{Working Copy Status} | |
175 The \cmd{hg status} command lets you select files: | |
176 \begin{lstlisting} | |
177 $ hg status | |
178 M index.html | |
179 A logo.png | |
180 $ hg status --added | |
181 A logo.png | |
182 \end{lstlisting} | |
183 | |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
184 How do you see the change to \path{index.html} without seeing the diff |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
185 of the added \path{logo.png} file? You do: |
296 | 186 \begin{lstlisting} |
187 $ hg diff $(hg status --no-status --modified) | |
188 \end{lstlisting} | |
189 | |
190 With file sets you can do | |
191 \begin{lstlisting} | |
192 $ hg diff "set:modified()" | |
193 \end{lstlisting} | |
194 and it will work on all platforms. | |
195 | |
196 \end{frame} | |
197 | |
198 \begin{frame}[fragile]{Working Copy Status} | |
199 The proposed predicates are: | |
200 \begin{itemize}[<+->] | |
201 | |
202 \item status flags: \cmd{modified()}, \cmd{added()}, \cmd{removed()}, | |
203 \cmd{deleted()}, \cmd{unknown()}, \cmd{ignored()}, \cmd{clean()} | |
204 | |
205 \item copied files: \cmd{copied()} | |
206 | |
207 \item tracked files that \emph{would} be ignored: \cmd{ignorable()} | |
208 | |
209 \item all tracked files: | |
210 \cmd{tracked()} | |
211 | |
212 \item after a merge: \cmd{conflicted()} and \cmd{not conflicted()} | |
213 | |
214 \end{itemize} | |
215 \end{frame} | |
216 | |
217 \begin{frame}[fragile] | |
218 We can replace the \cmd{find} Unix command: | |
219 \begin{itemize} | |
220 \item \cmd{glob(P)} instead of \cmd{find -path P} | |
221 \item \cmd{regex(P)} instead of \cmd{find -regex P} | |
222 \end{itemize} | |
223 Remember that this also works on old revisions: | |
224 \begin{lstlisting} | |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
225 $ hg status -r 1.0::2.0 "set:glob(src/*.h)" |
296 | 226 A src/foo.h |
227 M src/bar.h | |
228 \end{lstlisting} | |
229 This shows that \path{foo.h} is a new header file in version 2.0. | |
230 \end{frame} | |
231 | |
232 \begin{frame} | |
233 Other \cmd{find}-like predicates will be: | |
234 \begin{itemize} | |
235 \item file type: \cmd{executable()}, \cmd{symlink()}, | |
236 \item permissions: \cmd{perm()}, \cmd{owner()} | |
237 \item other: \cmd{date()}, \cmd{size()} | |
238 \end{itemize} | |
239 \end{frame} | |
240 | |
241 \begin{frame} | |
242 Matching files by content: | |
243 \begin{itemize} | |
244 \item \cmd{grep()}: like the Unix \cmd{grep} we all love | |
245 \item \cmd{contains()}: simple sub-string matching | |
246 \item \cmd{binary()}, \cmd{text()} | |
247 \item \cmd{decodes()}: check if file can be decoded with the given | |
248 character set, such as UTF-8, UTF-16, \dots | |
249 \item \cmd{eol()}: line-ending type, Unix (\cmd{LF}) or DOS (\cmd{CRLF}) | |
250 \end{itemize} | |
251 \end{frame} | |
252 | |
253 | |
254 | |
255 \begin{frame}[fragile]{Working Copy Predicates} | |
256 \begin{lstlisting} | |
257 $ hg status | |
258 ? logo.png | |
259 ? index.html | |
260 $ hg status "set:unknown() and not binary()" | |
261 ? index.html | |
262 \end{lstlisting} | |
263 \end{frame} | |
264 | |
265 | |
266 \begin{frame}[fragile]{Working Copy Predicates} | |
267 \begin{lstlisting} | |
268 $ hg status -c 100 "set:decodes('UTF-8')" | |
269 M plan.txt | |
270 \end{lstlisting} | |
271 \end{frame} | |
272 | |
273 \begin{frame} | |
274 Future extensions: | |
275 \begin{itemize} | |
276 \item \cmd{magic()}: recognize files based on file content, like the | |
277 \cmd{file} program in Unix | |
278 \item \cmd{locked()}: files locked for exclusive access by my | |
279 \ext{lock} extension | |
280 \end{itemize} | |
281 \end{frame} | |
282 | |
295 | 283 \begin{frame}[fragile]{Implementation} |
284 When a revision set is evaluated it is: | |
285 \begin{description}[<+->] | |
286 \item[tokenized:] split input into operators, symbols, strings | |
287 \item[parsed:] build parse tree based on operator precedence | |
288 \item[optimized:] reorders parse tree to evaluate cheap parts first: | |
289 \begin{lstlisting} | |
290 contains("README") and 1.0::1.5 | |
291 \end{lstlisting} | |
292 starts with a manifest-based query --- reorder to: | |
293 \begin{lstlisting} | |
294 1.0::1.5 and contains("README") | |
295 \end{lstlisting} | |
296 \item[executed:] go through tree and evaluate predicates | |
297 \end{description} | |
298 \end{frame} | |
299 | |
300 | |
294 | 301 \appendix |
302 \newcounter{finalframe} | |
303 \setcounter{finalframe}{\value{framenumber}} | |
304 | |
305 \setcounter{framenumber}{\value{finalframe}} | |
306 | |
307 \end{document} | |
298
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
308 |
6420e2bdb651
More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents:
296
diff
changeset
|
309 % LocalWords: changeset changesets |