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
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>}}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
7 \date{gearconf 2011}
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
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
25 \section{Revision Sets}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
26
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
27 \subsection{Predicates}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
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
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
51 bisected(string)
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
52 grep(regex)
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
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
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
63 \end{frame}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
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
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
67 \begin{frame}{Functions}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
68 ancestor(single, single)
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
69 ancestors(set)
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
70 children(set)
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
71 descendants(set)
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
72 follow([file])
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
73
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
74 heads(set)
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
75
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
76 outgoing([path])
298
6420e2bdb651 More rough slides on revsets
Martin Geisler <mg@aragost.com>
parents: 296
diff changeset
77
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
78 p1([set])
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
79 p2([set])
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
80 parents([set])
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
81 present(set)
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
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
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
124 \end{frame}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
125
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
126 \subsection{Operators}
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
127
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
128 \begin{frame}{Operators}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
129
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
130 \end{frame}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
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
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
159
296
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
160 \section{File Sets}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
161
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
162 \begin{frame}{Selecting Files}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
163 \begin{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
164 \item select files from working copy
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
165 \item select files from old revisions
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
166 \item might be part of Mercurial 1.9 (July) or 2.0 (November)
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
167 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
168 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
169
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
170 \begin{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
171 File sets give an amazing flexibility.
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
172 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
173
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
174 \begin{frame}[fragile]{Working Copy Status}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
175 The \cmd{hg status} command lets you select files:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
176 \begin{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
177 $ hg status
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
178 M index.html
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
179 A logo.png
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
180 $ hg status --added
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
181 A logo.png
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
182 \end{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
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
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
186 \begin{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
187 $ hg diff $(hg status --no-status --modified)
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
188 \end{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
189
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
190 With file sets you can do
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
191 \begin{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
192 $ hg diff "set:modified()"
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
193 \end{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
194 and it will work on all platforms.
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
195
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
196 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
197
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
198 \begin{frame}[fragile]{Working Copy Status}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
199 The proposed predicates are:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
200 \begin{itemize}[<+->]
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
201
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
202 \item status flags: \cmd{modified()}, \cmd{added()}, \cmd{removed()},
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
203 \cmd{deleted()}, \cmd{unknown()}, \cmd{ignored()}, \cmd{clean()}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
204
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
205 \item copied files: \cmd{copied()}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
206
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
207 \item tracked files that \emph{would} be ignored: \cmd{ignorable()}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
208
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
209 \item all tracked files:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
210 \cmd{tracked()}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
211
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
212 \item after a merge: \cmd{conflicted()} and \cmd{not conflicted()}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
213
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
214 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
215 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
216
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
217 \begin{frame}[fragile]
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
218 We can replace the \cmd{find} Unix command:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
219 \begin{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
220 \item \cmd{glob(P)} instead of \cmd{find -path P}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
221 \item \cmd{regex(P)} instead of \cmd{find -regex P}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
222 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
223 Remember that this also works on old revisions:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
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
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
226 A src/foo.h
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
227 M src/bar.h
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
228 \end{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
229 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
230 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
231
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
232 \begin{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
233 Other \cmd{find}-like predicates will be:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
234 \begin{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
235 \item file type: \cmd{executable()}, \cmd{symlink()},
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
236 \item permissions: \cmd{perm()}, \cmd{owner()}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
237 \item other: \cmd{date()}, \cmd{size()}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
238 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
239 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
240
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
241 \begin{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
242 Matching files by content:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
243 \begin{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
244 \item \cmd{grep()}: like the Unix \cmd{grep} we all love
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
245 \item \cmd{contains()}: simple sub-string matching
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
246 \item \cmd{binary()}, \cmd{text()}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
247 \item \cmd{decodes()}: check if file can be decoded with the given
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
248 character set, such as UTF-8, UTF-16, \dots
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
249 \item \cmd{eol()}: line-ending type, Unix (\cmd{LF}) or DOS (\cmd{CRLF})
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
250 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
251 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
252
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
253
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
254
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
255 \begin{frame}[fragile]{Working Copy Predicates}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
256 \begin{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
257 $ hg status
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
258 ? logo.png
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
259 ? index.html
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
260 $ hg status "set:unknown() and not binary()"
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
261 ? index.html
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
262 \end{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
263 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
264
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
265
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
266 \begin{frame}[fragile]{Working Copy Predicates}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
267 \begin{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
268 $ hg status -c 100 "set:decodes('UTF-8')"
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
269 M plan.txt
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
270 \end{lstlisting}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
271 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
272
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
273 \begin{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
274 Future extensions:
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
275 \begin{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
276 \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
277 \cmd{file} program in Unix
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
278 \item \cmd{locked()}: files locked for exclusive access by my
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
279 \ext{lock} extension
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
280 \end{itemize}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
281 \end{frame}
03a869b83c70 Rough slides on filesets
Martin Geisler <mg@aragost.com>
parents: 295
diff changeset
282
295
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
283 \begin{frame}[fragile]{Implementation}
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
284 When a revision set is evaluated it is:
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
285 \begin{description}[<+->]
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
286 \item[tokenized:] split input into operators, symbols, strings
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
287 \item[parsed:] build parse tree based on operator precedence
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
288 \item[optimized:] reorders parse tree to evaluate cheap parts first:
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
289 \begin{lstlisting}
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
290 contains("README") and 1.0::1.5
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
291 \end{lstlisting}
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
292 starts with a manifest-based query --- reorder to:
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
293 \begin{lstlisting}
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
294 1.0::1.5 and contains("README")
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
295 \end{lstlisting}
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
296 \item[executed:] go through tree and evaluate predicates
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
297 \end{description}
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
298 \end{frame}
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
299
fb08eff5fbd4 Slide on implementation
Martin Geisler <mg@aragost.com>
parents: 294
diff changeset
300
294
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
301 \appendix
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
302 \newcounter{finalframe}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
303 \setcounter{finalframe}{\value{framenumber}}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
304
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
305 \setcounter{framenumber}{\value{finalframe}}
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
306
53d5660fe558 Start of talk about revsets
Martin Geisler <mg@aragost.com>
parents:
diff changeset
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