##// END OF EJS Templates
graphlog: refactor revset() to return revisions...
Patrick Mezard -
r16405:17deb6bb default
parent child Browse files
Show More
@@ -1,521 +1,535 b''
1 # ASCII graph log extension for Mercurial
1 # ASCII graph log extension for Mercurial
2 #
2 #
3 # Copyright 2007 Joel Rosdahl <joel@rosdahl.net>
3 # Copyright 2007 Joel Rosdahl <joel@rosdahl.net>
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 '''command to view revision graphs from a shell
8 '''command to view revision graphs from a shell
9
9
10 This extension adds a --graph option to the incoming, outgoing and log
10 This extension adds a --graph option to the incoming, outgoing and log
11 commands. When this options is given, an ASCII representation of the
11 commands. When this options is given, an ASCII representation of the
12 revision graph is also shown.
12 revision graph is also shown.
13 '''
13 '''
14
14
15 from mercurial.cmdutil import show_changeset
15 from mercurial.cmdutil import show_changeset
16 from mercurial.commands import templateopts
16 from mercurial.commands import templateopts
17 from mercurial.i18n import _
17 from mercurial.i18n import _
18 from mercurial.node import nullrev
18 from mercurial.node import nullrev
19 from mercurial import cmdutil, commands, extensions, scmutil
19 from mercurial import cmdutil, commands, extensions, scmutil
20 from mercurial import hg, util, graphmod, templatekw
20 from mercurial import hg, util, graphmod, templatekw
21 from mercurial import revset as revsetmod
21 from mercurial import revset as revsetmod
22
22
23 cmdtable = {}
23 cmdtable = {}
24 command = cmdutil.command(cmdtable)
24 command = cmdutil.command(cmdtable)
25
25
26 ASCIIDATA = 'ASC'
26 ASCIIDATA = 'ASC'
27
27
28 def asciiedges(type, char, lines, seen, rev, parents):
28 def asciiedges(type, char, lines, seen, rev, parents):
29 """adds edge info to changelog DAG walk suitable for ascii()"""
29 """adds edge info to changelog DAG walk suitable for ascii()"""
30 if rev not in seen:
30 if rev not in seen:
31 seen.append(rev)
31 seen.append(rev)
32 nodeidx = seen.index(rev)
32 nodeidx = seen.index(rev)
33
33
34 knownparents = []
34 knownparents = []
35 newparents = []
35 newparents = []
36 for parent in parents:
36 for parent in parents:
37 if parent in seen:
37 if parent in seen:
38 knownparents.append(parent)
38 knownparents.append(parent)
39 else:
39 else:
40 newparents.append(parent)
40 newparents.append(parent)
41
41
42 ncols = len(seen)
42 ncols = len(seen)
43 nextseen = seen[:]
43 nextseen = seen[:]
44 nextseen[nodeidx:nodeidx + 1] = newparents
44 nextseen[nodeidx:nodeidx + 1] = newparents
45 edges = [(nodeidx, nextseen.index(p)) for p in knownparents]
45 edges = [(nodeidx, nextseen.index(p)) for p in knownparents]
46
46
47 while len(newparents) > 2:
47 while len(newparents) > 2:
48 # ascii() only knows how to add or remove a single column between two
48 # ascii() only knows how to add or remove a single column between two
49 # calls. Nodes with more than two parents break this constraint so we
49 # calls. Nodes with more than two parents break this constraint so we
50 # introduce intermediate expansion lines to grow the active node list
50 # introduce intermediate expansion lines to grow the active node list
51 # slowly.
51 # slowly.
52 edges.append((nodeidx, nodeidx))
52 edges.append((nodeidx, nodeidx))
53 edges.append((nodeidx, nodeidx + 1))
53 edges.append((nodeidx, nodeidx + 1))
54 nmorecols = 1
54 nmorecols = 1
55 yield (type, char, lines, (nodeidx, edges, ncols, nmorecols))
55 yield (type, char, lines, (nodeidx, edges, ncols, nmorecols))
56 char = '\\'
56 char = '\\'
57 lines = []
57 lines = []
58 nodeidx += 1
58 nodeidx += 1
59 ncols += 1
59 ncols += 1
60 edges = []
60 edges = []
61 del newparents[0]
61 del newparents[0]
62
62
63 if len(newparents) > 0:
63 if len(newparents) > 0:
64 edges.append((nodeidx, nodeidx))
64 edges.append((nodeidx, nodeidx))
65 if len(newparents) > 1:
65 if len(newparents) > 1:
66 edges.append((nodeidx, nodeidx + 1))
66 edges.append((nodeidx, nodeidx + 1))
67 nmorecols = len(nextseen) - ncols
67 nmorecols = len(nextseen) - ncols
68 seen[:] = nextseen
68 seen[:] = nextseen
69 yield (type, char, lines, (nodeidx, edges, ncols, nmorecols))
69 yield (type, char, lines, (nodeidx, edges, ncols, nmorecols))
70
70
71 def fix_long_right_edges(edges):
71 def fix_long_right_edges(edges):
72 for (i, (start, end)) in enumerate(edges):
72 for (i, (start, end)) in enumerate(edges):
73 if end > start:
73 if end > start:
74 edges[i] = (start, end + 1)
74 edges[i] = (start, end + 1)
75
75
76 def get_nodeline_edges_tail(
76 def get_nodeline_edges_tail(
77 node_index, p_node_index, n_columns, n_columns_diff, p_diff, fix_tail):
77 node_index, p_node_index, n_columns, n_columns_diff, p_diff, fix_tail):
78 if fix_tail and n_columns_diff == p_diff and n_columns_diff != 0:
78 if fix_tail and n_columns_diff == p_diff and n_columns_diff != 0:
79 # Still going in the same non-vertical direction.
79 # Still going in the same non-vertical direction.
80 if n_columns_diff == -1:
80 if n_columns_diff == -1:
81 start = max(node_index + 1, p_node_index)
81 start = max(node_index + 1, p_node_index)
82 tail = ["|", " "] * (start - node_index - 1)
82 tail = ["|", " "] * (start - node_index - 1)
83 tail.extend(["/", " "] * (n_columns - start))
83 tail.extend(["/", " "] * (n_columns - start))
84 return tail
84 return tail
85 else:
85 else:
86 return ["\\", " "] * (n_columns - node_index - 1)
86 return ["\\", " "] * (n_columns - node_index - 1)
87 else:
87 else:
88 return ["|", " "] * (n_columns - node_index - 1)
88 return ["|", " "] * (n_columns - node_index - 1)
89
89
90 def draw_edges(edges, nodeline, interline):
90 def draw_edges(edges, nodeline, interline):
91 for (start, end) in edges:
91 for (start, end) in edges:
92 if start == end + 1:
92 if start == end + 1:
93 interline[2 * end + 1] = "/"
93 interline[2 * end + 1] = "/"
94 elif start == end - 1:
94 elif start == end - 1:
95 interline[2 * start + 1] = "\\"
95 interline[2 * start + 1] = "\\"
96 elif start == end:
96 elif start == end:
97 interline[2 * start] = "|"
97 interline[2 * start] = "|"
98 else:
98 else:
99 if 2 * end >= len(nodeline):
99 if 2 * end >= len(nodeline):
100 continue
100 continue
101 nodeline[2 * end] = "+"
101 nodeline[2 * end] = "+"
102 if start > end:
102 if start > end:
103 (start, end) = (end, start)
103 (start, end) = (end, start)
104 for i in range(2 * start + 1, 2 * end):
104 for i in range(2 * start + 1, 2 * end):
105 if nodeline[i] != "+":
105 if nodeline[i] != "+":
106 nodeline[i] = "-"
106 nodeline[i] = "-"
107
107
108 def get_padding_line(ni, n_columns, edges):
108 def get_padding_line(ni, n_columns, edges):
109 line = []
109 line = []
110 line.extend(["|", " "] * ni)
110 line.extend(["|", " "] * ni)
111 if (ni, ni - 1) in edges or (ni, ni) in edges:
111 if (ni, ni - 1) in edges or (ni, ni) in edges:
112 # (ni, ni - 1) (ni, ni)
112 # (ni, ni - 1) (ni, ni)
113 # | | | | | | | |
113 # | | | | | | | |
114 # +---o | | o---+
114 # +---o | | o---+
115 # | | c | | c | |
115 # | | c | | c | |
116 # | |/ / | |/ /
116 # | |/ / | |/ /
117 # | | | | | |
117 # | | | | | |
118 c = "|"
118 c = "|"
119 else:
119 else:
120 c = " "
120 c = " "
121 line.extend([c, " "])
121 line.extend([c, " "])
122 line.extend(["|", " "] * (n_columns - ni - 1))
122 line.extend(["|", " "] * (n_columns - ni - 1))
123 return line
123 return line
124
124
125 def asciistate():
125 def asciistate():
126 """returns the initial value for the "state" argument to ascii()"""
126 """returns the initial value for the "state" argument to ascii()"""
127 return [0, 0]
127 return [0, 0]
128
128
129 def ascii(ui, state, type, char, text, coldata):
129 def ascii(ui, state, type, char, text, coldata):
130 """prints an ASCII graph of the DAG
130 """prints an ASCII graph of the DAG
131
131
132 takes the following arguments (one call per node in the graph):
132 takes the following arguments (one call per node in the graph):
133
133
134 - ui to write to
134 - ui to write to
135 - Somewhere to keep the needed state in (init to asciistate())
135 - Somewhere to keep the needed state in (init to asciistate())
136 - Column of the current node in the set of ongoing edges.
136 - Column of the current node in the set of ongoing edges.
137 - Type indicator of node data == ASCIIDATA.
137 - Type indicator of node data == ASCIIDATA.
138 - Payload: (char, lines):
138 - Payload: (char, lines):
139 - Character to use as node's symbol.
139 - Character to use as node's symbol.
140 - List of lines to display as the node's text.
140 - List of lines to display as the node's text.
141 - Edges; a list of (col, next_col) indicating the edges between
141 - Edges; a list of (col, next_col) indicating the edges between
142 the current node and its parents.
142 the current node and its parents.
143 - Number of columns (ongoing edges) in the current revision.
143 - Number of columns (ongoing edges) in the current revision.
144 - The difference between the number of columns (ongoing edges)
144 - The difference between the number of columns (ongoing edges)
145 in the next revision and the number of columns (ongoing edges)
145 in the next revision and the number of columns (ongoing edges)
146 in the current revision. That is: -1 means one column removed;
146 in the current revision. That is: -1 means one column removed;
147 0 means no columns added or removed; 1 means one column added.
147 0 means no columns added or removed; 1 means one column added.
148 """
148 """
149
149
150 idx, edges, ncols, coldiff = coldata
150 idx, edges, ncols, coldiff = coldata
151 assert -2 < coldiff < 2
151 assert -2 < coldiff < 2
152 if coldiff == -1:
152 if coldiff == -1:
153 # Transform
153 # Transform
154 #
154 #
155 # | | | | | |
155 # | | | | | |
156 # o | | into o---+
156 # o | | into o---+
157 # |X / |/ /
157 # |X / |/ /
158 # | | | |
158 # | | | |
159 fix_long_right_edges(edges)
159 fix_long_right_edges(edges)
160
160
161 # add_padding_line says whether to rewrite
161 # add_padding_line says whether to rewrite
162 #
162 #
163 # | | | | | | | |
163 # | | | | | | | |
164 # | o---+ into | o---+
164 # | o---+ into | o---+
165 # | / / | | | # <--- padding line
165 # | / / | | | # <--- padding line
166 # o | | | / /
166 # o | | | / /
167 # o | |
167 # o | |
168 add_padding_line = (len(text) > 2 and coldiff == -1 and
168 add_padding_line = (len(text) > 2 and coldiff == -1 and
169 [x for (x, y) in edges if x + 1 < y])
169 [x for (x, y) in edges if x + 1 < y])
170
170
171 # fix_nodeline_tail says whether to rewrite
171 # fix_nodeline_tail says whether to rewrite
172 #
172 #
173 # | | o | | | | o | |
173 # | | o | | | | o | |
174 # | | |/ / | | |/ /
174 # | | |/ / | | |/ /
175 # | o | | into | o / / # <--- fixed nodeline tail
175 # | o | | into | o / / # <--- fixed nodeline tail
176 # | |/ / | |/ /
176 # | |/ / | |/ /
177 # o | | o | |
177 # o | | o | |
178 fix_nodeline_tail = len(text) <= 2 and not add_padding_line
178 fix_nodeline_tail = len(text) <= 2 and not add_padding_line
179
179
180 # nodeline is the line containing the node character (typically o)
180 # nodeline is the line containing the node character (typically o)
181 nodeline = ["|", " "] * idx
181 nodeline = ["|", " "] * idx
182 nodeline.extend([char, " "])
182 nodeline.extend([char, " "])
183
183
184 nodeline.extend(
184 nodeline.extend(
185 get_nodeline_edges_tail(idx, state[1], ncols, coldiff,
185 get_nodeline_edges_tail(idx, state[1], ncols, coldiff,
186 state[0], fix_nodeline_tail))
186 state[0], fix_nodeline_tail))
187
187
188 # shift_interline is the line containing the non-vertical
188 # shift_interline is the line containing the non-vertical
189 # edges between this entry and the next
189 # edges between this entry and the next
190 shift_interline = ["|", " "] * idx
190 shift_interline = ["|", " "] * idx
191 if coldiff == -1:
191 if coldiff == -1:
192 n_spaces = 1
192 n_spaces = 1
193 edge_ch = "/"
193 edge_ch = "/"
194 elif coldiff == 0:
194 elif coldiff == 0:
195 n_spaces = 2
195 n_spaces = 2
196 edge_ch = "|"
196 edge_ch = "|"
197 else:
197 else:
198 n_spaces = 3
198 n_spaces = 3
199 edge_ch = "\\"
199 edge_ch = "\\"
200 shift_interline.extend(n_spaces * [" "])
200 shift_interline.extend(n_spaces * [" "])
201 shift_interline.extend([edge_ch, " "] * (ncols - idx - 1))
201 shift_interline.extend([edge_ch, " "] * (ncols - idx - 1))
202
202
203 # draw edges from the current node to its parents
203 # draw edges from the current node to its parents
204 draw_edges(edges, nodeline, shift_interline)
204 draw_edges(edges, nodeline, shift_interline)
205
205
206 # lines is the list of all graph lines to print
206 # lines is the list of all graph lines to print
207 lines = [nodeline]
207 lines = [nodeline]
208 if add_padding_line:
208 if add_padding_line:
209 lines.append(get_padding_line(idx, ncols, edges))
209 lines.append(get_padding_line(idx, ncols, edges))
210 lines.append(shift_interline)
210 lines.append(shift_interline)
211
211
212 # make sure that there are as many graph lines as there are
212 # make sure that there are as many graph lines as there are
213 # log strings
213 # log strings
214 while len(text) < len(lines):
214 while len(text) < len(lines):
215 text.append("")
215 text.append("")
216 if len(lines) < len(text):
216 if len(lines) < len(text):
217 extra_interline = ["|", " "] * (ncols + coldiff)
217 extra_interline = ["|", " "] * (ncols + coldiff)
218 while len(lines) < len(text):
218 while len(lines) < len(text):
219 lines.append(extra_interline)
219 lines.append(extra_interline)
220
220
221 # print lines
221 # print lines
222 indentation_level = max(ncols, ncols + coldiff)
222 indentation_level = max(ncols, ncols + coldiff)
223 for (line, logstr) in zip(lines, text):
223 for (line, logstr) in zip(lines, text):
224 ln = "%-*s %s" % (2 * indentation_level, "".join(line), logstr)
224 ln = "%-*s %s" % (2 * indentation_level, "".join(line), logstr)
225 ui.write(ln.rstrip() + '\n')
225 ui.write(ln.rstrip() + '\n')
226
226
227 # ... and start over
227 # ... and start over
228 state[0] = coldiff
228 state[0] = coldiff
229 state[1] = idx
229 state[1] = idx
230
230
231 def get_revs(repo, rev_opt):
231 def get_revs(repo, rev_opt):
232 if rev_opt:
232 if rev_opt:
233 revs = scmutil.revrange(repo, rev_opt)
233 revs = scmutil.revrange(repo, rev_opt)
234 if len(revs) == 0:
234 if len(revs) == 0:
235 return (nullrev, nullrev)
235 return (nullrev, nullrev)
236 return (max(revs), min(revs))
236 return (max(revs), min(revs))
237 else:
237 else:
238 return (len(repo) - 1, 0)
238 return (len(repo) - 1, 0)
239
239
240 def check_unsupported_flags(pats, opts):
240 def check_unsupported_flags(pats, opts):
241 for op in ["newest_first"]:
241 for op in ["newest_first"]:
242 if op in opts and opts[op]:
242 if op in opts and opts[op]:
243 raise util.Abort(_("-G/--graph option is incompatible with --%s")
243 raise util.Abort(_("-G/--graph option is incompatible with --%s")
244 % op.replace("_", "-"))
244 % op.replace("_", "-"))
245
245
246 def makefilematcher(repo, pats, followfirst):
246 def makefilematcher(repo, pats, followfirst):
247 # When displaying a revision with --patch --follow FILE, we have
247 # When displaying a revision with --patch --follow FILE, we have
248 # to know which file of the revision must be diffed. With
248 # to know which file of the revision must be diffed. With
249 # --follow, we want the names of the ancestors of FILE in the
249 # --follow, we want the names of the ancestors of FILE in the
250 # revision, stored in "fcache". "fcache" is populated by
250 # revision, stored in "fcache". "fcache" is populated by
251 # reproducing the graph traversal already done by --follow revset
251 # reproducing the graph traversal already done by --follow revset
252 # and relating linkrevs to file names (which is not "correct" but
252 # and relating linkrevs to file names (which is not "correct" but
253 # good enough).
253 # good enough).
254 fcache = {}
254 fcache = {}
255 fcacheready = [False]
255 fcacheready = [False]
256 pctx = repo['.']
256 pctx = repo['.']
257 wctx = repo[None]
257 wctx = repo[None]
258
258
259 def populate():
259 def populate():
260 for fn in pats:
260 for fn in pats:
261 for i in ((pctx[fn],), pctx[fn].ancestors(followfirst=followfirst)):
261 for i in ((pctx[fn],), pctx[fn].ancestors(followfirst=followfirst)):
262 for c in i:
262 for c in i:
263 fcache.setdefault(c.linkrev(), set()).add(c.path())
263 fcache.setdefault(c.linkrev(), set()).add(c.path())
264
264
265 def filematcher(rev):
265 def filematcher(rev):
266 if not fcacheready[0]:
266 if not fcacheready[0]:
267 # Lazy initialization
267 # Lazy initialization
268 fcacheready[0] = True
268 fcacheready[0] = True
269 populate()
269 populate()
270 return scmutil.match(wctx, fcache.get(rev, []), default='path')
270 return scmutil.match(wctx, fcache.get(rev, []), default='path')
271
271
272 return filematcher
272 return filematcher
273
273
274 def revset(repo, pats, opts):
274 def _makelogrevset(repo, pats, opts, revs):
275 """Return (expr, filematcher) where expr is a revset string built
275 """Return (expr, filematcher) where expr is a revset string built
276 log options and file patterns, or None. Note that --rev options
276 from log options and file patterns or None. If --stat or --patch
277 are ignored when building expr because we do not know if they are
277 are not passed filematcher is None. Otherwise it is a callable
278 proper revsets or legacy expressions like a 'foo-bar' tags. If
278 taking a revision number and returning a match objects filtering
279 --stat or --patch are not passed filematcher is None. Otherwise it
279 the files to be detailed when displaying the revision.
280 a a callable taking a revision number and returning a match
281 objects filtering the files to be detailed when displaying the
282 revision.
283 """
280 """
284 opt2revset = {
281 opt2revset = {
285 'follow': ('follow()', None),
282 'follow': ('follow()', None),
286 'follow_first': ('_followfirst()', None),
283 'follow_first': ('_followfirst()', None),
287 'no_merges': ('not merge()', None),
284 'no_merges': ('not merge()', None),
288 'only_merges': ('merge()', None),
285 'only_merges': ('merge()', None),
289 '_matchfiles': ('_matchfiles(%(val)s)', None),
286 '_matchfiles': ('_matchfiles(%(val)s)', None),
290 'date': ('date(%(val)r)', None),
287 'date': ('date(%(val)r)', None),
291 'branch': ('branch(%(val)r)', ' or '),
288 'branch': ('branch(%(val)r)', ' or '),
292 '_patslog': ('filelog(%(val)r)', ' or '),
289 '_patslog': ('filelog(%(val)r)', ' or '),
293 '_patsfollow': ('follow(%(val)r)', ' or '),
290 '_patsfollow': ('follow(%(val)r)', ' or '),
294 '_patsfollowfirst': ('_followfirst(%(val)r)', ' or '),
291 '_patsfollowfirst': ('_followfirst(%(val)r)', ' or '),
295 'keyword': ('keyword(%(val)r)', ' or '),
292 'keyword': ('keyword(%(val)r)', ' or '),
296 'prune': ('not (%(val)r or ancestors(%(val)r))', ' and '),
293 'prune': ('not (%(val)r or ancestors(%(val)r))', ' and '),
297 'user': ('user(%(val)r)', ' or '),
294 'user': ('user(%(val)r)', ' or '),
298 }
295 }
299
296
300 opts = dict(opts)
297 opts = dict(opts)
301 # branch and only_branch are really aliases and must be handled at
298 # follow or not follow?
302 # the same time
303 opts['branch'] = opts.get('branch', []) + opts.get('only_branch', [])
304 follow = opts.get('follow') or opts.get('follow_first')
299 follow = opts.get('follow') or opts.get('follow_first')
305 followfirst = opts.get('follow_first')
300 followfirst = opts.get('follow_first')
306 if 'follow' in opts:
301 if 'follow' in opts:
307 del opts['follow']
302 del opts['follow']
308 if 'follow_first' in opts:
303 if 'follow_first' in opts:
309 del opts['follow_first']
304 del opts['follow_first']
305
306 # branch and only_branch are really aliases and must be handled at
307 # the same time
308 opts['branch'] = opts.get('branch', []) + opts.get('only_branch', [])
310 # pats/include/exclude are passed to match.match() directly in
309 # pats/include/exclude are passed to match.match() directly in
311 # _matchfile() revset but walkchangerevs() builds its matcher with
310 # _matchfile() revset but walkchangerevs() builds its matcher with
312 # scmutil.match(). The difference is input pats are globbed on
311 # scmutil.match(). The difference is input pats are globbed on
313 # platforms without shell expansion (windows).
312 # platforms without shell expansion (windows).
314 pctx = repo[None]
313 pctx = repo[None]
315 match, pats = scmutil.matchandpats(pctx, pats, opts)
314 match, pats = scmutil.matchandpats(pctx, pats, opts)
316 slowpath = match.anypats() or (match.files() and opts.get('removed'))
315 slowpath = match.anypats() or (match.files() and opts.get('removed'))
317 if not slowpath:
316 if not slowpath:
318 for f in match.files():
317 for f in match.files():
319 if follow and f not in pctx:
318 if follow and f not in pctx:
320 raise util.Abort(_('cannot follow file not in parent '
319 raise util.Abort(_('cannot follow file not in parent '
321 'revision: "%s"') % f)
320 'revision: "%s"') % f)
322 filelog = repo.file(f)
321 filelog = repo.file(f)
323 if not len(filelog):
322 if not len(filelog):
324 # A zero count may be a directory or deleted file, so
323 # A zero count may be a directory or deleted file, so
325 # try to find matching entries on the slow path.
324 # try to find matching entries on the slow path.
326 if follow:
325 if follow:
327 raise util.Abort(
326 raise util.Abort(
328 _('cannot follow nonexistent file: "%s"') % f)
327 _('cannot follow nonexistent file: "%s"') % f)
329 slowpath = True
328 slowpath = True
330 if slowpath:
329 if slowpath:
331 # See cmdutil.walkchangerevs() slow path.
330 # See cmdutil.walkchangerevs() slow path.
332 #
331 #
333 if follow:
332 if follow:
334 raise util.Abort(_('can only follow copies/renames for explicit '
333 raise util.Abort(_('can only follow copies/renames for explicit '
335 'filenames'))
334 'filenames'))
336 # pats/include/exclude cannot be represented as separate
335 # pats/include/exclude cannot be represented as separate
337 # revset expressions as their filtering logic applies at file
336 # revset expressions as their filtering logic applies at file
338 # level. For instance "-I a -X a" matches a revision touching
337 # level. For instance "-I a -X a" matches a revision touching
339 # "a" and "b" while "file(a) and not file(b)" does
338 # "a" and "b" while "file(a) and not file(b)" does
340 # not. Besides, filesets are evaluated against the working
339 # not. Besides, filesets are evaluated against the working
341 # directory.
340 # directory.
342 matchargs = ['r:']
341 matchargs = ['r:']
343 for p in pats:
342 for p in pats:
344 matchargs.append('p:' + p)
343 matchargs.append('p:' + p)
345 for p in opts.get('include', []):
344 for p in opts.get('include', []):
346 matchargs.append('i:' + p)
345 matchargs.append('i:' + p)
347 for p in opts.get('exclude', []):
346 for p in opts.get('exclude', []):
348 matchargs.append('x:' + p)
347 matchargs.append('x:' + p)
349 matchargs = ','.join(('%r' % p) for p in matchargs)
348 matchargs = ','.join(('%r' % p) for p in matchargs)
350 opts['_matchfiles'] = matchargs
349 opts['_matchfiles'] = matchargs
351 else:
350 else:
352 if follow:
351 if follow:
353 if followfirst:
352 if followfirst:
354 if pats:
353 if pats:
355 opts['_patsfollowfirst'] = list(pats)
354 opts['_patsfollowfirst'] = list(pats)
356 else:
355 else:
357 opts['follow_first'] = True
356 opts['follow_first'] = True
358 else:
357 else:
359 if pats:
358 if pats:
360 opts['_patsfollow'] = list(pats)
359 opts['_patsfollow'] = list(pats)
361 else:
360 else:
362 opts['follow'] = True
361 opts['follow'] = True
363 else:
362 else:
364 opts['_patslog'] = list(pats)
363 opts['_patslog'] = list(pats)
365
364
366 filematcher = None
365 filematcher = None
367 if opts.get('patch') or opts.get('stat'):
366 if opts.get('patch') or opts.get('stat'):
368 if follow:
367 if follow:
369 filematcher = makefilematcher(repo, pats, followfirst)
368 filematcher = makefilematcher(repo, pats, followfirst)
370 else:
369 else:
371 filematcher = lambda rev: match
370 filematcher = lambda rev: match
372
371
373 revset = []
372 revset = []
374 for op, val in opts.iteritems():
373 for op, val in opts.iteritems():
375 if not val:
374 if not val:
376 continue
375 continue
377 if op not in opt2revset:
376 if op not in opt2revset:
378 continue
377 continue
379 revop, andor = opt2revset[op]
378 revop, andor = opt2revset[op]
380 if '%(val)' not in revop:
379 if '%(val)' not in revop:
381 revset.append(revop)
380 revset.append(revop)
382 else:
381 else:
383 if not isinstance(val, list):
382 if not isinstance(val, list):
384 expr = revop % {'val': val}
383 expr = revop % {'val': val}
385 else:
384 else:
386 expr = '(' + andor.join((revop % {'val': v}) for v in val) + ')'
385 expr = '(' + andor.join((revop % {'val': v}) for v in val) + ')'
387 revset.append(expr)
386 revset.append(expr)
388
387
389 if revset:
388 if revset:
390 revset = '(' + ' and '.join(revset) + ')'
389 revset = '(' + ' and '.join(revset) + ')'
391 else:
390 else:
392 revset = None
391 revset = None
393 return revset, filematcher
392 return revset, filematcher
394
393
394 def getlogrevs(repo, pats, opts):
395 """Return (revs, expr, filematcher) where revs is a list of
396 revision numbers, expr is a revset string built from log options
397 and file patterns or None, and used to filter 'revs'. If --stat or
398 --patch are not passed filematcher is None. Otherwise it is a
399 callable taking a revision number and returning a match objects
400 filtering the files to be detailed when displaying the revision.
401 """
402 if not len(repo):
403 return [], None, None
404 if opts.get('rev'):
405 revs = scmutil.revrange(repo, opts['rev'])
406 else:
407 revs = range(len(repo))
408 if not revs:
409 return [], None, None
410 expr, filematcher = _makelogrevset(repo, pats, opts, revs)
411 if expr:
412 revs = revsetmod.match(repo.ui, expr)(repo, revs)
413 return revs, expr, filematcher
414
395 def generate(ui, dag, displayer, showparents, edgefn, getrenamed=None,
415 def generate(ui, dag, displayer, showparents, edgefn, getrenamed=None,
396 filematcher=None):
416 filematcher=None):
397 seen, state = [], asciistate()
417 seen, state = [], asciistate()
398 for rev, type, ctx, parents in dag:
418 for rev, type, ctx, parents in dag:
399 char = ctx.node() in showparents and '@' or 'o'
419 char = ctx.node() in showparents and '@' or 'o'
400 copies = None
420 copies = None
401 if getrenamed and ctx.rev():
421 if getrenamed and ctx.rev():
402 copies = []
422 copies = []
403 for fn in ctx.files():
423 for fn in ctx.files():
404 rename = getrenamed(fn, ctx.rev())
424 rename = getrenamed(fn, ctx.rev())
405 if rename:
425 if rename:
406 copies.append((fn, rename[0]))
426 copies.append((fn, rename[0]))
407 revmatchfn = None
427 revmatchfn = None
408 if filematcher is not None:
428 if filematcher is not None:
409 revmatchfn = filematcher(ctx.rev())
429 revmatchfn = filematcher(ctx.rev())
410 displayer.show(ctx, copies=copies, matchfn=revmatchfn)
430 displayer.show(ctx, copies=copies, matchfn=revmatchfn)
411 lines = displayer.hunk.pop(rev).split('\n')[:-1]
431 lines = displayer.hunk.pop(rev).split('\n')[:-1]
412 displayer.flush(rev)
432 displayer.flush(rev)
413 edges = edgefn(type, char, lines, seen, rev, parents)
433 edges = edgefn(type, char, lines, seen, rev, parents)
414 for type, char, lines, coldata in edges:
434 for type, char, lines, coldata in edges:
415 ascii(ui, state, type, char, lines, coldata)
435 ascii(ui, state, type, char, lines, coldata)
416 displayer.close()
436 displayer.close()
417
437
418 @command('glog',
438 @command('glog',
419 [('l', 'limit', '',
439 [('l', 'limit', '',
420 _('limit number of changes displayed'), _('NUM')),
440 _('limit number of changes displayed'), _('NUM')),
421 ('p', 'patch', False, _('show patch')),
441 ('p', 'patch', False, _('show patch')),
422 ('r', 'rev', [], _('show the specified revision or range'), _('REV')),
442 ('r', 'rev', [], _('show the specified revision or range'), _('REV')),
423 ] + templateopts,
443 ] + templateopts,
424 _('hg glog [OPTION]... [FILE]'))
444 _('hg glog [OPTION]... [FILE]'))
425 def graphlog(ui, repo, *pats, **opts):
445 def graphlog(ui, repo, *pats, **opts):
426 """show revision history alongside an ASCII revision graph
446 """show revision history alongside an ASCII revision graph
427
447
428 Print a revision history alongside a revision graph drawn with
448 Print a revision history alongside a revision graph drawn with
429 ASCII characters.
449 ASCII characters.
430
450
431 Nodes printed as an @ character are parents of the working
451 Nodes printed as an @ character are parents of the working
432 directory.
452 directory.
433 """
453 """
434
454
435 check_unsupported_flags(pats, opts)
455 check_unsupported_flags(pats, opts)
436
456
437 expr, filematcher = revset(repo, pats, opts)
457 revs, expr, filematcher = getlogrevs(repo, pats, opts)
438 if opts.get('rev'):
439 revs = scmutil.revrange(repo, opts['rev'])
440 else:
441 revs = range(len(repo))
442 if expr:
443 revs = revsetmod.match(repo.ui, expr)(repo, revs)
444 revs = sorted(revs, reverse=1)
458 revs = sorted(revs, reverse=1)
445 limit = cmdutil.loglimit(opts)
459 limit = cmdutil.loglimit(opts)
446 if limit is not None:
460 if limit is not None:
447 revs = revs[:limit]
461 revs = revs[:limit]
448 revdag = graphmod.dagwalker(repo, revs)
462 revdag = graphmod.dagwalker(repo, revs)
449
463
450 getrenamed = None
464 getrenamed = None
451 if opts.get('copies'):
465 if opts.get('copies'):
452 endrev = None
466 endrev = None
453 if opts.get('rev'):
467 if opts.get('rev'):
454 endrev = max(scmutil.revrange(repo, opts.get('rev'))) + 1
468 endrev = max(scmutil.revrange(repo, opts.get('rev'))) + 1
455 getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
469 getrenamed = templatekw.getrenamedfn(repo, endrev=endrev)
456 displayer = show_changeset(ui, repo, opts, buffered=True)
470 displayer = show_changeset(ui, repo, opts, buffered=True)
457 showparents = [ctx.node() for ctx in repo[None].parents()]
471 showparents = [ctx.node() for ctx in repo[None].parents()]
458 generate(ui, revdag, displayer, showparents, asciiedges, getrenamed,
472 generate(ui, revdag, displayer, showparents, asciiedges, getrenamed,
459 filematcher)
473 filematcher)
460
474
461 def graphrevs(repo, nodes, opts):
475 def graphrevs(repo, nodes, opts):
462 limit = cmdutil.loglimit(opts)
476 limit = cmdutil.loglimit(opts)
463 nodes.reverse()
477 nodes.reverse()
464 if limit is not None:
478 if limit is not None:
465 nodes = nodes[:limit]
479 nodes = nodes[:limit]
466 return graphmod.nodes(repo, nodes)
480 return graphmod.nodes(repo, nodes)
467
481
468 def goutgoing(ui, repo, dest=None, **opts):
482 def goutgoing(ui, repo, dest=None, **opts):
469 """show the outgoing changesets alongside an ASCII revision graph
483 """show the outgoing changesets alongside an ASCII revision graph
470
484
471 Print the outgoing changesets alongside a revision graph drawn with
485 Print the outgoing changesets alongside a revision graph drawn with
472 ASCII characters.
486 ASCII characters.
473
487
474 Nodes printed as an @ character are parents of the working
488 Nodes printed as an @ character are parents of the working
475 directory.
489 directory.
476 """
490 """
477
491
478 check_unsupported_flags([], opts)
492 check_unsupported_flags([], opts)
479 o = hg._outgoing(ui, repo, dest, opts)
493 o = hg._outgoing(ui, repo, dest, opts)
480 if o is None:
494 if o is None:
481 return
495 return
482
496
483 revdag = graphrevs(repo, o, opts)
497 revdag = graphrevs(repo, o, opts)
484 displayer = show_changeset(ui, repo, opts, buffered=True)
498 displayer = show_changeset(ui, repo, opts, buffered=True)
485 showparents = [ctx.node() for ctx in repo[None].parents()]
499 showparents = [ctx.node() for ctx in repo[None].parents()]
486 generate(ui, revdag, displayer, showparents, asciiedges)
500 generate(ui, revdag, displayer, showparents, asciiedges)
487
501
488 def gincoming(ui, repo, source="default", **opts):
502 def gincoming(ui, repo, source="default", **opts):
489 """show the incoming changesets alongside an ASCII revision graph
503 """show the incoming changesets alongside an ASCII revision graph
490
504
491 Print the incoming changesets alongside a revision graph drawn with
505 Print the incoming changesets alongside a revision graph drawn with
492 ASCII characters.
506 ASCII characters.
493
507
494 Nodes printed as an @ character are parents of the working
508 Nodes printed as an @ character are parents of the working
495 directory.
509 directory.
496 """
510 """
497 def subreporecurse():
511 def subreporecurse():
498 return 1
512 return 1
499
513
500 check_unsupported_flags([], opts)
514 check_unsupported_flags([], opts)
501 def display(other, chlist, displayer):
515 def display(other, chlist, displayer):
502 revdag = graphrevs(other, chlist, opts)
516 revdag = graphrevs(other, chlist, opts)
503 showparents = [ctx.node() for ctx in repo[None].parents()]
517 showparents = [ctx.node() for ctx in repo[None].parents()]
504 generate(ui, revdag, displayer, showparents, asciiedges)
518 generate(ui, revdag, displayer, showparents, asciiedges)
505
519
506 hg._incoming(display, subreporecurse, ui, repo, source, opts, buffered=True)
520 hg._incoming(display, subreporecurse, ui, repo, source, opts, buffered=True)
507
521
508 def uisetup(ui):
522 def uisetup(ui):
509 '''Initialize the extension.'''
523 '''Initialize the extension.'''
510 _wrapcmd('log', commands.table, graphlog)
524 _wrapcmd('log', commands.table, graphlog)
511 _wrapcmd('incoming', commands.table, gincoming)
525 _wrapcmd('incoming', commands.table, gincoming)
512 _wrapcmd('outgoing', commands.table, goutgoing)
526 _wrapcmd('outgoing', commands.table, goutgoing)
513
527
514 def _wrapcmd(cmd, table, wrapfn):
528 def _wrapcmd(cmd, table, wrapfn):
515 '''wrap the command'''
529 '''wrap the command'''
516 def graph(orig, *args, **kwargs):
530 def graph(orig, *args, **kwargs):
517 if kwargs['graph']:
531 if kwargs['graph']:
518 return wrapfn(*args, **kwargs)
532 return wrapfn(*args, **kwargs)
519 return orig(*args, **kwargs)
533 return orig(*args, **kwargs)
520 entry = extensions.wrapcommand(table, cmd, graph)
534 entry = extensions.wrapcommand(table, cmd, graph)
521 entry[1].append(('G', 'graph', None, _("show the revision DAG")))
535 entry[1].append(('G', 'graph', None, _("show the revision DAG")))
@@ -1,1932 +1,1927 b''
1 @ (34) head
1 @ (34) head
2 |
2 |
3 | o (33) head
3 | o (33) head
4 | |
4 | |
5 o | (32) expand
5 o | (32) expand
6 |\ \
6 |\ \
7 | o \ (31) expand
7 | o \ (31) expand
8 | |\ \
8 | |\ \
9 | | o \ (30) expand
9 | | o \ (30) expand
10 | | |\ \
10 | | |\ \
11 | | | o | (29) regular commit
11 | | | o | (29) regular commit
12 | | | | |
12 | | | | |
13 | | o | | (28) merge zero known
13 | | o | | (28) merge zero known
14 | | |\ \ \
14 | | |\ \ \
15 o | | | | | (27) collapse
15 o | | | | | (27) collapse
16 |/ / / / /
16 |/ / / / /
17 | | o---+ (26) merge one known; far right
17 | | o---+ (26) merge one known; far right
18 | | | | |
18 | | | | |
19 +---o | | (25) merge one known; far left
19 +---o | | (25) merge one known; far left
20 | | | | |
20 | | | | |
21 | | o | | (24) merge one known; immediate right
21 | | o | | (24) merge one known; immediate right
22 | | |\| |
22 | | |\| |
23 | | o | | (23) merge one known; immediate left
23 | | o | | (23) merge one known; immediate left
24 | |/| | |
24 | |/| | |
25 +---o---+ (22) merge two known; one far left, one far right
25 +---o---+ (22) merge two known; one far left, one far right
26 | | / /
26 | | / /
27 o | | | (21) expand
27 o | | | (21) expand
28 |\ \ \ \
28 |\ \ \ \
29 | o---+-+ (20) merge two known; two far right
29 | o---+-+ (20) merge two known; two far right
30 | / / /
30 | / / /
31 o | | | (19) expand
31 o | | | (19) expand
32 |\ \ \ \
32 |\ \ \ \
33 +---+---o (18) merge two known; two far left
33 +---+---o (18) merge two known; two far left
34 | | | |
34 | | | |
35 | o | | (17) expand
35 | o | | (17) expand
36 | |\ \ \
36 | |\ \ \
37 | | o---+ (16) merge two known; one immediate right, one near right
37 | | o---+ (16) merge two known; one immediate right, one near right
38 | | |/ /
38 | | |/ /
39 o | | | (15) expand
39 o | | | (15) expand
40 |\ \ \ \
40 |\ \ \ \
41 | o-----+ (14) merge two known; one immediate right, one far right
41 | o-----+ (14) merge two known; one immediate right, one far right
42 | |/ / /
42 | |/ / /
43 o | | | (13) expand
43 o | | | (13) expand
44 |\ \ \ \
44 |\ \ \ \
45 +---o | | (12) merge two known; one immediate right, one far left
45 +---o | | (12) merge two known; one immediate right, one far left
46 | | |/ /
46 | | |/ /
47 | o | | (11) expand
47 | o | | (11) expand
48 | |\ \ \
48 | |\ \ \
49 | | o---+ (10) merge two known; one immediate left, one near right
49 | | o---+ (10) merge two known; one immediate left, one near right
50 | |/ / /
50 | |/ / /
51 o | | | (9) expand
51 o | | | (9) expand
52 |\ \ \ \
52 |\ \ \ \
53 | o-----+ (8) merge two known; one immediate left, one far right
53 | o-----+ (8) merge two known; one immediate left, one far right
54 |/ / / /
54 |/ / / /
55 o | | | (7) expand
55 o | | | (7) expand
56 |\ \ \ \
56 |\ \ \ \
57 +---o | | (6) merge two known; one immediate left, one far left
57 +---o | | (6) merge two known; one immediate left, one far left
58 | |/ / /
58 | |/ / /
59 | o | | (5) expand
59 | o | | (5) expand
60 | |\ \ \
60 | |\ \ \
61 | | o | | (4) merge two known; one immediate left, one immediate right
61 | | o | | (4) merge two known; one immediate left, one immediate right
62 | |/|/ /
62 | |/|/ /
63 | o / / (3) collapse
63 | o / / (3) collapse
64 |/ / /
64 |/ / /
65 o / / (2) collapse
65 o / / (2) collapse
66 |/ /
66 |/ /
67 o / (1) collapse
67 o / (1) collapse
68 |/
68 |/
69 o (0) root
69 o (0) root
70
70
71
71
72 $ "$TESTDIR/hghave" no-outer-repo || exit 80
72 $ "$TESTDIR/hghave" no-outer-repo || exit 80
73
73
74 $ commit()
74 $ commit()
75 > {
75 > {
76 > rev=$1
76 > rev=$1
77 > msg=$2
77 > msg=$2
78 > shift 2
78 > shift 2
79 > if [ "$#" -gt 0 ]; then
79 > if [ "$#" -gt 0 ]; then
80 > hg debugsetparents "$@"
80 > hg debugsetparents "$@"
81 > fi
81 > fi
82 > echo $rev > a
82 > echo $rev > a
83 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
83 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
84 > }
84 > }
85
85
86 $ cat > printrevset.py <<EOF
86 $ cat > printrevset.py <<EOF
87 > from mercurial import extensions, revset, commands
87 > from mercurial import extensions, revset, commands
88 > from hgext import graphlog
88 > from hgext import graphlog
89 >
89 >
90 > def uisetup(ui):
90 > def uisetup(ui):
91 > def printrevset(orig, ui, repo, *pats, **opts):
91 > def printrevset(orig, ui, repo, *pats, **opts):
92 > if opts.get('print_revset'):
92 > if opts.get('print_revset'):
93 > expr = graphlog.revset(repo, pats, opts)[0]
93 > expr = graphlog.getlogrevs(repo, pats, opts)[1]
94 > if expr:
94 > if expr:
95 > tree = revset.parse(expr)[0]
95 > tree = revset.parse(expr)[0]
96 > else:
96 > else:
97 > tree = []
97 > tree = []
98 > ui.write('%r\n' % (opts.get('rev', []),))
98 > ui.write('%r\n' % (opts.get('rev', []),))
99 > ui.write(revset.prettyformat(tree) + '\n')
99 > ui.write(revset.prettyformat(tree) + '\n')
100 > return 0
100 > return 0
101 > return orig(ui, repo, *pats, **opts)
101 > return orig(ui, repo, *pats, **opts)
102 > entry = extensions.wrapcommand(commands.table, 'log', printrevset)
102 > entry = extensions.wrapcommand(commands.table, 'log', printrevset)
103 > entry[1].append(('', 'print-revset', False,
103 > entry[1].append(('', 'print-revset', False,
104 > 'print generated revset and exit (DEPRECATED)'))
104 > 'print generated revset and exit (DEPRECATED)'))
105 > EOF
105 > EOF
106
106
107 $ echo "[extensions]" >> $HGRCPATH
107 $ echo "[extensions]" >> $HGRCPATH
108 $ echo "graphlog=" >> $HGRCPATH
108 $ echo "graphlog=" >> $HGRCPATH
109 $ echo "printrevset=`pwd`/printrevset.py" >> $HGRCPATH
109 $ echo "printrevset=`pwd`/printrevset.py" >> $HGRCPATH
110
110
111 $ hg init repo
111 $ hg init repo
112 $ cd repo
112 $ cd repo
113
113
114 Empty repo:
114 Empty repo:
115
115
116 $ hg glog
116 $ hg glog
117
117
118
118
119 Building DAG:
119 Building DAG:
120
120
121 $ commit 0 "root"
121 $ commit 0 "root"
122 $ commit 1 "collapse" 0
122 $ commit 1 "collapse" 0
123 $ commit 2 "collapse" 1
123 $ commit 2 "collapse" 1
124 $ commit 3 "collapse" 2
124 $ commit 3 "collapse" 2
125 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
125 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
126 $ commit 5 "expand" 3 4
126 $ commit 5 "expand" 3 4
127 $ commit 6 "merge two known; one immediate left, one far left" 2 5
127 $ commit 6 "merge two known; one immediate left, one far left" 2 5
128 $ commit 7 "expand" 2 5
128 $ commit 7 "expand" 2 5
129 $ commit 8 "merge two known; one immediate left, one far right" 0 7
129 $ commit 8 "merge two known; one immediate left, one far right" 0 7
130 $ commit 9 "expand" 7 8
130 $ commit 9 "expand" 7 8
131 $ commit 10 "merge two known; one immediate left, one near right" 0 6
131 $ commit 10 "merge two known; one immediate left, one near right" 0 6
132 $ commit 11 "expand" 6 10
132 $ commit 11 "expand" 6 10
133 $ commit 12 "merge two known; one immediate right, one far left" 1 9
133 $ commit 12 "merge two known; one immediate right, one far left" 1 9
134 $ commit 13 "expand" 9 11
134 $ commit 13 "expand" 9 11
135 $ commit 14 "merge two known; one immediate right, one far right" 0 12
135 $ commit 14 "merge two known; one immediate right, one far right" 0 12
136 $ commit 15 "expand" 13 14
136 $ commit 15 "expand" 13 14
137 $ commit 16 "merge two known; one immediate right, one near right" 0 1
137 $ commit 16 "merge two known; one immediate right, one near right" 0 1
138 $ commit 17 "expand" 12 16
138 $ commit 17 "expand" 12 16
139 $ commit 18 "merge two known; two far left" 1 15
139 $ commit 18 "merge two known; two far left" 1 15
140 $ commit 19 "expand" 15 17
140 $ commit 19 "expand" 15 17
141 $ commit 20 "merge two known; two far right" 0 18
141 $ commit 20 "merge two known; two far right" 0 18
142 $ commit 21 "expand" 19 20
142 $ commit 21 "expand" 19 20
143 $ commit 22 "merge two known; one far left, one far right" 18 21
143 $ commit 22 "merge two known; one far left, one far right" 18 21
144 $ commit 23 "merge one known; immediate left" 1 22
144 $ commit 23 "merge one known; immediate left" 1 22
145 $ commit 24 "merge one known; immediate right" 0 23
145 $ commit 24 "merge one known; immediate right" 0 23
146 $ commit 25 "merge one known; far left" 21 24
146 $ commit 25 "merge one known; far left" 21 24
147 $ commit 26 "merge one known; far right" 18 25
147 $ commit 26 "merge one known; far right" 18 25
148 $ commit 27 "collapse" 21
148 $ commit 27 "collapse" 21
149 $ commit 28 "merge zero known" 1 26
149 $ commit 28 "merge zero known" 1 26
150 $ commit 29 "regular commit" 0
150 $ commit 29 "regular commit" 0
151 $ commit 30 "expand" 28 29
151 $ commit 30 "expand" 28 29
152 $ commit 31 "expand" 21 30
152 $ commit 31 "expand" 21 30
153 $ commit 32 "expand" 27 31
153 $ commit 32 "expand" 27 31
154 $ commit 33 "head" 18
154 $ commit 33 "head" 18
155 $ commit 34 "head" 32
155 $ commit 34 "head" 32
156
156
157
157
158 $ hg glog -q
158 $ hg glog -q
159 @ 34:fea3ac5810e0
159 @ 34:fea3ac5810e0
160 |
160 |
161 | o 33:68608f5145f9
161 | o 33:68608f5145f9
162 | |
162 | |
163 o | 32:d06dffa21a31
163 o | 32:d06dffa21a31
164 |\ \
164 |\ \
165 | o \ 31:621d83e11f67
165 | o \ 31:621d83e11f67
166 | |\ \
166 | |\ \
167 | | o \ 30:6e11cd4b648f
167 | | o \ 30:6e11cd4b648f
168 | | |\ \
168 | | |\ \
169 | | | o | 29:cd9bb2be7593
169 | | | o | 29:cd9bb2be7593
170 | | | | |
170 | | | | |
171 | | o | | 28:44ecd0b9ae99
171 | | o | | 28:44ecd0b9ae99
172 | | |\ \ \
172 | | |\ \ \
173 o | | | | | 27:886ed638191b
173 o | | | | | 27:886ed638191b
174 |/ / / / /
174 |/ / / / /
175 | | o---+ 26:7f25b6c2f0b9
175 | | o---+ 26:7f25b6c2f0b9
176 | | | | |
176 | | | | |
177 +---o | | 25:91da8ed57247
177 +---o | | 25:91da8ed57247
178 | | | | |
178 | | | | |
179 | | o | | 24:a9c19a3d96b7
179 | | o | | 24:a9c19a3d96b7
180 | | |\| |
180 | | |\| |
181 | | o | | 23:a01cddf0766d
181 | | o | | 23:a01cddf0766d
182 | |/| | |
182 | |/| | |
183 +---o---+ 22:e0d9cccacb5d
183 +---o---+ 22:e0d9cccacb5d
184 | | / /
184 | | / /
185 o | | | 21:d42a756af44d
185 o | | | 21:d42a756af44d
186 |\ \ \ \
186 |\ \ \ \
187 | o---+-+ 20:d30ed6450e32
187 | o---+-+ 20:d30ed6450e32
188 | / / /
188 | / / /
189 o | | | 19:31ddc2c1573b
189 o | | | 19:31ddc2c1573b
190 |\ \ \ \
190 |\ \ \ \
191 +---+---o 18:1aa84d96232a
191 +---+---o 18:1aa84d96232a
192 | | | |
192 | | | |
193 | o | | 17:44765d7c06e0
193 | o | | 17:44765d7c06e0
194 | |\ \ \
194 | |\ \ \
195 | | o---+ 16:3677d192927d
195 | | o---+ 16:3677d192927d
196 | | |/ /
196 | | |/ /
197 o | | | 15:1dda3f72782d
197 o | | | 15:1dda3f72782d
198 |\ \ \ \
198 |\ \ \ \
199 | o-----+ 14:8eac370358ef
199 | o-----+ 14:8eac370358ef
200 | |/ / /
200 | |/ / /
201 o | | | 13:22d8966a97e3
201 o | | | 13:22d8966a97e3
202 |\ \ \ \
202 |\ \ \ \
203 +---o | | 12:86b91144a6e9
203 +---o | | 12:86b91144a6e9
204 | | |/ /
204 | | |/ /
205 | o | | 11:832d76e6bdf2
205 | o | | 11:832d76e6bdf2
206 | |\ \ \
206 | |\ \ \
207 | | o---+ 10:74c64d036d72
207 | | o---+ 10:74c64d036d72
208 | |/ / /
208 | |/ / /
209 o | | | 9:7010c0af0a35
209 o | | | 9:7010c0af0a35
210 |\ \ \ \
210 |\ \ \ \
211 | o-----+ 8:7a0b11f71937
211 | o-----+ 8:7a0b11f71937
212 |/ / / /
212 |/ / / /
213 o | | | 7:b632bb1b1224
213 o | | | 7:b632bb1b1224
214 |\ \ \ \
214 |\ \ \ \
215 +---o | | 6:b105a072e251
215 +---o | | 6:b105a072e251
216 | |/ / /
216 | |/ / /
217 | o | | 5:4409d547b708
217 | o | | 5:4409d547b708
218 | |\ \ \
218 | |\ \ \
219 | | o | | 4:26a8bac39d9f
219 | | o | | 4:26a8bac39d9f
220 | |/|/ /
220 | |/|/ /
221 | o / / 3:27eef8ed80b4
221 | o / / 3:27eef8ed80b4
222 |/ / /
222 |/ / /
223 o / / 2:3d9a33b8d1e1
223 o / / 2:3d9a33b8d1e1
224 |/ /
224 |/ /
225 o / 1:6db2ef61d156
225 o / 1:6db2ef61d156
226 |/
226 |/
227 o 0:e6eb3150255d
227 o 0:e6eb3150255d
228
228
229
229
230 $ hg glog
230 $ hg glog
231 @ changeset: 34:fea3ac5810e0
231 @ changeset: 34:fea3ac5810e0
232 | tag: tip
232 | tag: tip
233 | parent: 32:d06dffa21a31
233 | parent: 32:d06dffa21a31
234 | user: test
234 | user: test
235 | date: Thu Jan 01 00:00:34 1970 +0000
235 | date: Thu Jan 01 00:00:34 1970 +0000
236 | summary: (34) head
236 | summary: (34) head
237 |
237 |
238 | o changeset: 33:68608f5145f9
238 | o changeset: 33:68608f5145f9
239 | | parent: 18:1aa84d96232a
239 | | parent: 18:1aa84d96232a
240 | | user: test
240 | | user: test
241 | | date: Thu Jan 01 00:00:33 1970 +0000
241 | | date: Thu Jan 01 00:00:33 1970 +0000
242 | | summary: (33) head
242 | | summary: (33) head
243 | |
243 | |
244 o | changeset: 32:d06dffa21a31
244 o | changeset: 32:d06dffa21a31
245 |\ \ parent: 27:886ed638191b
245 |\ \ parent: 27:886ed638191b
246 | | | parent: 31:621d83e11f67
246 | | | parent: 31:621d83e11f67
247 | | | user: test
247 | | | user: test
248 | | | date: Thu Jan 01 00:00:32 1970 +0000
248 | | | date: Thu Jan 01 00:00:32 1970 +0000
249 | | | summary: (32) expand
249 | | | summary: (32) expand
250 | | |
250 | | |
251 | o | changeset: 31:621d83e11f67
251 | o | changeset: 31:621d83e11f67
252 | |\ \ parent: 21:d42a756af44d
252 | |\ \ parent: 21:d42a756af44d
253 | | | | parent: 30:6e11cd4b648f
253 | | | | parent: 30:6e11cd4b648f
254 | | | | user: test
254 | | | | user: test
255 | | | | date: Thu Jan 01 00:00:31 1970 +0000
255 | | | | date: Thu Jan 01 00:00:31 1970 +0000
256 | | | | summary: (31) expand
256 | | | | summary: (31) expand
257 | | | |
257 | | | |
258 | | o | changeset: 30:6e11cd4b648f
258 | | o | changeset: 30:6e11cd4b648f
259 | | |\ \ parent: 28:44ecd0b9ae99
259 | | |\ \ parent: 28:44ecd0b9ae99
260 | | | | | parent: 29:cd9bb2be7593
260 | | | | | parent: 29:cd9bb2be7593
261 | | | | | user: test
261 | | | | | user: test
262 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
262 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
263 | | | | | summary: (30) expand
263 | | | | | summary: (30) expand
264 | | | | |
264 | | | | |
265 | | | o | changeset: 29:cd9bb2be7593
265 | | | o | changeset: 29:cd9bb2be7593
266 | | | | | parent: 0:e6eb3150255d
266 | | | | | parent: 0:e6eb3150255d
267 | | | | | user: test
267 | | | | | user: test
268 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
268 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
269 | | | | | summary: (29) regular commit
269 | | | | | summary: (29) regular commit
270 | | | | |
270 | | | | |
271 | | o | | changeset: 28:44ecd0b9ae99
271 | | o | | changeset: 28:44ecd0b9ae99
272 | | |\ \ \ parent: 1:6db2ef61d156
272 | | |\ \ \ parent: 1:6db2ef61d156
273 | | | | | | parent: 26:7f25b6c2f0b9
273 | | | | | | parent: 26:7f25b6c2f0b9
274 | | | | | | user: test
274 | | | | | | user: test
275 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
275 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
276 | | | | | | summary: (28) merge zero known
276 | | | | | | summary: (28) merge zero known
277 | | | | | |
277 | | | | | |
278 o | | | | | changeset: 27:886ed638191b
278 o | | | | | changeset: 27:886ed638191b
279 |/ / / / / parent: 21:d42a756af44d
279 |/ / / / / parent: 21:d42a756af44d
280 | | | | | user: test
280 | | | | | user: test
281 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
281 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
282 | | | | | summary: (27) collapse
282 | | | | | summary: (27) collapse
283 | | | | |
283 | | | | |
284 | | o---+ changeset: 26:7f25b6c2f0b9
284 | | o---+ changeset: 26:7f25b6c2f0b9
285 | | | | | parent: 18:1aa84d96232a
285 | | | | | parent: 18:1aa84d96232a
286 | | | | | parent: 25:91da8ed57247
286 | | | | | parent: 25:91da8ed57247
287 | | | | | user: test
287 | | | | | user: test
288 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
288 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
289 | | | | | summary: (26) merge one known; far right
289 | | | | | summary: (26) merge one known; far right
290 | | | | |
290 | | | | |
291 +---o | | changeset: 25:91da8ed57247
291 +---o | | changeset: 25:91da8ed57247
292 | | | | | parent: 21:d42a756af44d
292 | | | | | parent: 21:d42a756af44d
293 | | | | | parent: 24:a9c19a3d96b7
293 | | | | | parent: 24:a9c19a3d96b7
294 | | | | | user: test
294 | | | | | user: test
295 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
295 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
296 | | | | | summary: (25) merge one known; far left
296 | | | | | summary: (25) merge one known; far left
297 | | | | |
297 | | | | |
298 | | o | | changeset: 24:a9c19a3d96b7
298 | | o | | changeset: 24:a9c19a3d96b7
299 | | |\| | parent: 0:e6eb3150255d
299 | | |\| | parent: 0:e6eb3150255d
300 | | | | | parent: 23:a01cddf0766d
300 | | | | | parent: 23:a01cddf0766d
301 | | | | | user: test
301 | | | | | user: test
302 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
302 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
303 | | | | | summary: (24) merge one known; immediate right
303 | | | | | summary: (24) merge one known; immediate right
304 | | | | |
304 | | | | |
305 | | o | | changeset: 23:a01cddf0766d
305 | | o | | changeset: 23:a01cddf0766d
306 | |/| | | parent: 1:6db2ef61d156
306 | |/| | | parent: 1:6db2ef61d156
307 | | | | | parent: 22:e0d9cccacb5d
307 | | | | | parent: 22:e0d9cccacb5d
308 | | | | | user: test
308 | | | | | user: test
309 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
309 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
310 | | | | | summary: (23) merge one known; immediate left
310 | | | | | summary: (23) merge one known; immediate left
311 | | | | |
311 | | | | |
312 +---o---+ changeset: 22:e0d9cccacb5d
312 +---o---+ changeset: 22:e0d9cccacb5d
313 | | | | parent: 18:1aa84d96232a
313 | | | | parent: 18:1aa84d96232a
314 | | / / parent: 21:d42a756af44d
314 | | / / parent: 21:d42a756af44d
315 | | | | user: test
315 | | | | user: test
316 | | | | date: Thu Jan 01 00:00:22 1970 +0000
316 | | | | date: Thu Jan 01 00:00:22 1970 +0000
317 | | | | summary: (22) merge two known; one far left, one far right
317 | | | | summary: (22) merge two known; one far left, one far right
318 | | | |
318 | | | |
319 o | | | changeset: 21:d42a756af44d
319 o | | | changeset: 21:d42a756af44d
320 |\ \ \ \ parent: 19:31ddc2c1573b
320 |\ \ \ \ parent: 19:31ddc2c1573b
321 | | | | | parent: 20:d30ed6450e32
321 | | | | | parent: 20:d30ed6450e32
322 | | | | | user: test
322 | | | | | user: test
323 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
323 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
324 | | | | | summary: (21) expand
324 | | | | | summary: (21) expand
325 | | | | |
325 | | | | |
326 | o---+-+ changeset: 20:d30ed6450e32
326 | o---+-+ changeset: 20:d30ed6450e32
327 | | | | parent: 0:e6eb3150255d
327 | | | | parent: 0:e6eb3150255d
328 | / / / parent: 18:1aa84d96232a
328 | / / / parent: 18:1aa84d96232a
329 | | | | user: test
329 | | | | user: test
330 | | | | date: Thu Jan 01 00:00:20 1970 +0000
330 | | | | date: Thu Jan 01 00:00:20 1970 +0000
331 | | | | summary: (20) merge two known; two far right
331 | | | | summary: (20) merge two known; two far right
332 | | | |
332 | | | |
333 o | | | changeset: 19:31ddc2c1573b
333 o | | | changeset: 19:31ddc2c1573b
334 |\ \ \ \ parent: 15:1dda3f72782d
334 |\ \ \ \ parent: 15:1dda3f72782d
335 | | | | | parent: 17:44765d7c06e0
335 | | | | | parent: 17:44765d7c06e0
336 | | | | | user: test
336 | | | | | user: test
337 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
337 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
338 | | | | | summary: (19) expand
338 | | | | | summary: (19) expand
339 | | | | |
339 | | | | |
340 +---+---o changeset: 18:1aa84d96232a
340 +---+---o changeset: 18:1aa84d96232a
341 | | | | parent: 1:6db2ef61d156
341 | | | | parent: 1:6db2ef61d156
342 | | | | parent: 15:1dda3f72782d
342 | | | | parent: 15:1dda3f72782d
343 | | | | user: test
343 | | | | user: test
344 | | | | date: Thu Jan 01 00:00:18 1970 +0000
344 | | | | date: Thu Jan 01 00:00:18 1970 +0000
345 | | | | summary: (18) merge two known; two far left
345 | | | | summary: (18) merge two known; two far left
346 | | | |
346 | | | |
347 | o | | changeset: 17:44765d7c06e0
347 | o | | changeset: 17:44765d7c06e0
348 | |\ \ \ parent: 12:86b91144a6e9
348 | |\ \ \ parent: 12:86b91144a6e9
349 | | | | | parent: 16:3677d192927d
349 | | | | | parent: 16:3677d192927d
350 | | | | | user: test
350 | | | | | user: test
351 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
351 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
352 | | | | | summary: (17) expand
352 | | | | | summary: (17) expand
353 | | | | |
353 | | | | |
354 | | o---+ changeset: 16:3677d192927d
354 | | o---+ changeset: 16:3677d192927d
355 | | | | | parent: 0:e6eb3150255d
355 | | | | | parent: 0:e6eb3150255d
356 | | |/ / parent: 1:6db2ef61d156
356 | | |/ / parent: 1:6db2ef61d156
357 | | | | user: test
357 | | | | user: test
358 | | | | date: Thu Jan 01 00:00:16 1970 +0000
358 | | | | date: Thu Jan 01 00:00:16 1970 +0000
359 | | | | summary: (16) merge two known; one immediate right, one near right
359 | | | | summary: (16) merge two known; one immediate right, one near right
360 | | | |
360 | | | |
361 o | | | changeset: 15:1dda3f72782d
361 o | | | changeset: 15:1dda3f72782d
362 |\ \ \ \ parent: 13:22d8966a97e3
362 |\ \ \ \ parent: 13:22d8966a97e3
363 | | | | | parent: 14:8eac370358ef
363 | | | | | parent: 14:8eac370358ef
364 | | | | | user: test
364 | | | | | user: test
365 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
365 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
366 | | | | | summary: (15) expand
366 | | | | | summary: (15) expand
367 | | | | |
367 | | | | |
368 | o-----+ changeset: 14:8eac370358ef
368 | o-----+ changeset: 14:8eac370358ef
369 | | | | | parent: 0:e6eb3150255d
369 | | | | | parent: 0:e6eb3150255d
370 | |/ / / parent: 12:86b91144a6e9
370 | |/ / / parent: 12:86b91144a6e9
371 | | | | user: test
371 | | | | user: test
372 | | | | date: Thu Jan 01 00:00:14 1970 +0000
372 | | | | date: Thu Jan 01 00:00:14 1970 +0000
373 | | | | summary: (14) merge two known; one immediate right, one far right
373 | | | | summary: (14) merge two known; one immediate right, one far right
374 | | | |
374 | | | |
375 o | | | changeset: 13:22d8966a97e3
375 o | | | changeset: 13:22d8966a97e3
376 |\ \ \ \ parent: 9:7010c0af0a35
376 |\ \ \ \ parent: 9:7010c0af0a35
377 | | | | | parent: 11:832d76e6bdf2
377 | | | | | parent: 11:832d76e6bdf2
378 | | | | | user: test
378 | | | | | user: test
379 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
379 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
380 | | | | | summary: (13) expand
380 | | | | | summary: (13) expand
381 | | | | |
381 | | | | |
382 +---o | | changeset: 12:86b91144a6e9
382 +---o | | changeset: 12:86b91144a6e9
383 | | |/ / parent: 1:6db2ef61d156
383 | | |/ / parent: 1:6db2ef61d156
384 | | | | parent: 9:7010c0af0a35
384 | | | | parent: 9:7010c0af0a35
385 | | | | user: test
385 | | | | user: test
386 | | | | date: Thu Jan 01 00:00:12 1970 +0000
386 | | | | date: Thu Jan 01 00:00:12 1970 +0000
387 | | | | summary: (12) merge two known; one immediate right, one far left
387 | | | | summary: (12) merge two known; one immediate right, one far left
388 | | | |
388 | | | |
389 | o | | changeset: 11:832d76e6bdf2
389 | o | | changeset: 11:832d76e6bdf2
390 | |\ \ \ parent: 6:b105a072e251
390 | |\ \ \ parent: 6:b105a072e251
391 | | | | | parent: 10:74c64d036d72
391 | | | | | parent: 10:74c64d036d72
392 | | | | | user: test
392 | | | | | user: test
393 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
393 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
394 | | | | | summary: (11) expand
394 | | | | | summary: (11) expand
395 | | | | |
395 | | | | |
396 | | o---+ changeset: 10:74c64d036d72
396 | | o---+ changeset: 10:74c64d036d72
397 | | | | | parent: 0:e6eb3150255d
397 | | | | | parent: 0:e6eb3150255d
398 | |/ / / parent: 6:b105a072e251
398 | |/ / / parent: 6:b105a072e251
399 | | | | user: test
399 | | | | user: test
400 | | | | date: Thu Jan 01 00:00:10 1970 +0000
400 | | | | date: Thu Jan 01 00:00:10 1970 +0000
401 | | | | summary: (10) merge two known; one immediate left, one near right
401 | | | | summary: (10) merge two known; one immediate left, one near right
402 | | | |
402 | | | |
403 o | | | changeset: 9:7010c0af0a35
403 o | | | changeset: 9:7010c0af0a35
404 |\ \ \ \ parent: 7:b632bb1b1224
404 |\ \ \ \ parent: 7:b632bb1b1224
405 | | | | | parent: 8:7a0b11f71937
405 | | | | | parent: 8:7a0b11f71937
406 | | | | | user: test
406 | | | | | user: test
407 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
407 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
408 | | | | | summary: (9) expand
408 | | | | | summary: (9) expand
409 | | | | |
409 | | | | |
410 | o-----+ changeset: 8:7a0b11f71937
410 | o-----+ changeset: 8:7a0b11f71937
411 | | | | | parent: 0:e6eb3150255d
411 | | | | | parent: 0:e6eb3150255d
412 |/ / / / parent: 7:b632bb1b1224
412 |/ / / / parent: 7:b632bb1b1224
413 | | | | user: test
413 | | | | user: test
414 | | | | date: Thu Jan 01 00:00:08 1970 +0000
414 | | | | date: Thu Jan 01 00:00:08 1970 +0000
415 | | | | summary: (8) merge two known; one immediate left, one far right
415 | | | | summary: (8) merge two known; one immediate left, one far right
416 | | | |
416 | | | |
417 o | | | changeset: 7:b632bb1b1224
417 o | | | changeset: 7:b632bb1b1224
418 |\ \ \ \ parent: 2:3d9a33b8d1e1
418 |\ \ \ \ parent: 2:3d9a33b8d1e1
419 | | | | | parent: 5:4409d547b708
419 | | | | | parent: 5:4409d547b708
420 | | | | | user: test
420 | | | | | user: test
421 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
421 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
422 | | | | | summary: (7) expand
422 | | | | | summary: (7) expand
423 | | | | |
423 | | | | |
424 +---o | | changeset: 6:b105a072e251
424 +---o | | changeset: 6:b105a072e251
425 | |/ / / parent: 2:3d9a33b8d1e1
425 | |/ / / parent: 2:3d9a33b8d1e1
426 | | | | parent: 5:4409d547b708
426 | | | | parent: 5:4409d547b708
427 | | | | user: test
427 | | | | user: test
428 | | | | date: Thu Jan 01 00:00:06 1970 +0000
428 | | | | date: Thu Jan 01 00:00:06 1970 +0000
429 | | | | summary: (6) merge two known; one immediate left, one far left
429 | | | | summary: (6) merge two known; one immediate left, one far left
430 | | | |
430 | | | |
431 | o | | changeset: 5:4409d547b708
431 | o | | changeset: 5:4409d547b708
432 | |\ \ \ parent: 3:27eef8ed80b4
432 | |\ \ \ parent: 3:27eef8ed80b4
433 | | | | | parent: 4:26a8bac39d9f
433 | | | | | parent: 4:26a8bac39d9f
434 | | | | | user: test
434 | | | | | user: test
435 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
435 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
436 | | | | | summary: (5) expand
436 | | | | | summary: (5) expand
437 | | | | |
437 | | | | |
438 | | o | | changeset: 4:26a8bac39d9f
438 | | o | | changeset: 4:26a8bac39d9f
439 | |/|/ / parent: 1:6db2ef61d156
439 | |/|/ / parent: 1:6db2ef61d156
440 | | | | parent: 3:27eef8ed80b4
440 | | | | parent: 3:27eef8ed80b4
441 | | | | user: test
441 | | | | user: test
442 | | | | date: Thu Jan 01 00:00:04 1970 +0000
442 | | | | date: Thu Jan 01 00:00:04 1970 +0000
443 | | | | summary: (4) merge two known; one immediate left, one immediate right
443 | | | | summary: (4) merge two known; one immediate left, one immediate right
444 | | | |
444 | | | |
445 | o | | changeset: 3:27eef8ed80b4
445 | o | | changeset: 3:27eef8ed80b4
446 |/ / / user: test
446 |/ / / user: test
447 | | | date: Thu Jan 01 00:00:03 1970 +0000
447 | | | date: Thu Jan 01 00:00:03 1970 +0000
448 | | | summary: (3) collapse
448 | | | summary: (3) collapse
449 | | |
449 | | |
450 o | | changeset: 2:3d9a33b8d1e1
450 o | | changeset: 2:3d9a33b8d1e1
451 |/ / user: test
451 |/ / user: test
452 | | date: Thu Jan 01 00:00:02 1970 +0000
452 | | date: Thu Jan 01 00:00:02 1970 +0000
453 | | summary: (2) collapse
453 | | summary: (2) collapse
454 | |
454 | |
455 o | changeset: 1:6db2ef61d156
455 o | changeset: 1:6db2ef61d156
456 |/ user: test
456 |/ user: test
457 | date: Thu Jan 01 00:00:01 1970 +0000
457 | date: Thu Jan 01 00:00:01 1970 +0000
458 | summary: (1) collapse
458 | summary: (1) collapse
459 |
459 |
460 o changeset: 0:e6eb3150255d
460 o changeset: 0:e6eb3150255d
461 user: test
461 user: test
462 date: Thu Jan 01 00:00:00 1970 +0000
462 date: Thu Jan 01 00:00:00 1970 +0000
463 summary: (0) root
463 summary: (0) root
464
464
465
465
466 File glog:
466 File glog:
467 $ hg glog a
467 $ hg glog a
468 @ changeset: 34:fea3ac5810e0
468 @ changeset: 34:fea3ac5810e0
469 | tag: tip
469 | tag: tip
470 | parent: 32:d06dffa21a31
470 | parent: 32:d06dffa21a31
471 | user: test
471 | user: test
472 | date: Thu Jan 01 00:00:34 1970 +0000
472 | date: Thu Jan 01 00:00:34 1970 +0000
473 | summary: (34) head
473 | summary: (34) head
474 |
474 |
475 | o changeset: 33:68608f5145f9
475 | o changeset: 33:68608f5145f9
476 | | parent: 18:1aa84d96232a
476 | | parent: 18:1aa84d96232a
477 | | user: test
477 | | user: test
478 | | date: Thu Jan 01 00:00:33 1970 +0000
478 | | date: Thu Jan 01 00:00:33 1970 +0000
479 | | summary: (33) head
479 | | summary: (33) head
480 | |
480 | |
481 o | changeset: 32:d06dffa21a31
481 o | changeset: 32:d06dffa21a31
482 |\ \ parent: 27:886ed638191b
482 |\ \ parent: 27:886ed638191b
483 | | | parent: 31:621d83e11f67
483 | | | parent: 31:621d83e11f67
484 | | | user: test
484 | | | user: test
485 | | | date: Thu Jan 01 00:00:32 1970 +0000
485 | | | date: Thu Jan 01 00:00:32 1970 +0000
486 | | | summary: (32) expand
486 | | | summary: (32) expand
487 | | |
487 | | |
488 | o | changeset: 31:621d83e11f67
488 | o | changeset: 31:621d83e11f67
489 | |\ \ parent: 21:d42a756af44d
489 | |\ \ parent: 21:d42a756af44d
490 | | | | parent: 30:6e11cd4b648f
490 | | | | parent: 30:6e11cd4b648f
491 | | | | user: test
491 | | | | user: test
492 | | | | date: Thu Jan 01 00:00:31 1970 +0000
492 | | | | date: Thu Jan 01 00:00:31 1970 +0000
493 | | | | summary: (31) expand
493 | | | | summary: (31) expand
494 | | | |
494 | | | |
495 | | o | changeset: 30:6e11cd4b648f
495 | | o | changeset: 30:6e11cd4b648f
496 | | |\ \ parent: 28:44ecd0b9ae99
496 | | |\ \ parent: 28:44ecd0b9ae99
497 | | | | | parent: 29:cd9bb2be7593
497 | | | | | parent: 29:cd9bb2be7593
498 | | | | | user: test
498 | | | | | user: test
499 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
499 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
500 | | | | | summary: (30) expand
500 | | | | | summary: (30) expand
501 | | | | |
501 | | | | |
502 | | | o | changeset: 29:cd9bb2be7593
502 | | | o | changeset: 29:cd9bb2be7593
503 | | | | | parent: 0:e6eb3150255d
503 | | | | | parent: 0:e6eb3150255d
504 | | | | | user: test
504 | | | | | user: test
505 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
505 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
506 | | | | | summary: (29) regular commit
506 | | | | | summary: (29) regular commit
507 | | | | |
507 | | | | |
508 | | o | | changeset: 28:44ecd0b9ae99
508 | | o | | changeset: 28:44ecd0b9ae99
509 | | |\ \ \ parent: 1:6db2ef61d156
509 | | |\ \ \ parent: 1:6db2ef61d156
510 | | | | | | parent: 26:7f25b6c2f0b9
510 | | | | | | parent: 26:7f25b6c2f0b9
511 | | | | | | user: test
511 | | | | | | user: test
512 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
512 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
513 | | | | | | summary: (28) merge zero known
513 | | | | | | summary: (28) merge zero known
514 | | | | | |
514 | | | | | |
515 o | | | | | changeset: 27:886ed638191b
515 o | | | | | changeset: 27:886ed638191b
516 |/ / / / / parent: 21:d42a756af44d
516 |/ / / / / parent: 21:d42a756af44d
517 | | | | | user: test
517 | | | | | user: test
518 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
518 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
519 | | | | | summary: (27) collapse
519 | | | | | summary: (27) collapse
520 | | | | |
520 | | | | |
521 | | o---+ changeset: 26:7f25b6c2f0b9
521 | | o---+ changeset: 26:7f25b6c2f0b9
522 | | | | | parent: 18:1aa84d96232a
522 | | | | | parent: 18:1aa84d96232a
523 | | | | | parent: 25:91da8ed57247
523 | | | | | parent: 25:91da8ed57247
524 | | | | | user: test
524 | | | | | user: test
525 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
525 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
526 | | | | | summary: (26) merge one known; far right
526 | | | | | summary: (26) merge one known; far right
527 | | | | |
527 | | | | |
528 +---o | | changeset: 25:91da8ed57247
528 +---o | | changeset: 25:91da8ed57247
529 | | | | | parent: 21:d42a756af44d
529 | | | | | parent: 21:d42a756af44d
530 | | | | | parent: 24:a9c19a3d96b7
530 | | | | | parent: 24:a9c19a3d96b7
531 | | | | | user: test
531 | | | | | user: test
532 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
532 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
533 | | | | | summary: (25) merge one known; far left
533 | | | | | summary: (25) merge one known; far left
534 | | | | |
534 | | | | |
535 | | o | | changeset: 24:a9c19a3d96b7
535 | | o | | changeset: 24:a9c19a3d96b7
536 | | |\| | parent: 0:e6eb3150255d
536 | | |\| | parent: 0:e6eb3150255d
537 | | | | | parent: 23:a01cddf0766d
537 | | | | | parent: 23:a01cddf0766d
538 | | | | | user: test
538 | | | | | user: test
539 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
539 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
540 | | | | | summary: (24) merge one known; immediate right
540 | | | | | summary: (24) merge one known; immediate right
541 | | | | |
541 | | | | |
542 | | o | | changeset: 23:a01cddf0766d
542 | | o | | changeset: 23:a01cddf0766d
543 | |/| | | parent: 1:6db2ef61d156
543 | |/| | | parent: 1:6db2ef61d156
544 | | | | | parent: 22:e0d9cccacb5d
544 | | | | | parent: 22:e0d9cccacb5d
545 | | | | | user: test
545 | | | | | user: test
546 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
546 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
547 | | | | | summary: (23) merge one known; immediate left
547 | | | | | summary: (23) merge one known; immediate left
548 | | | | |
548 | | | | |
549 +---o---+ changeset: 22:e0d9cccacb5d
549 +---o---+ changeset: 22:e0d9cccacb5d
550 | | | | parent: 18:1aa84d96232a
550 | | | | parent: 18:1aa84d96232a
551 | | / / parent: 21:d42a756af44d
551 | | / / parent: 21:d42a756af44d
552 | | | | user: test
552 | | | | user: test
553 | | | | date: Thu Jan 01 00:00:22 1970 +0000
553 | | | | date: Thu Jan 01 00:00:22 1970 +0000
554 | | | | summary: (22) merge two known; one far left, one far right
554 | | | | summary: (22) merge two known; one far left, one far right
555 | | | |
555 | | | |
556 o | | | changeset: 21:d42a756af44d
556 o | | | changeset: 21:d42a756af44d
557 |\ \ \ \ parent: 19:31ddc2c1573b
557 |\ \ \ \ parent: 19:31ddc2c1573b
558 | | | | | parent: 20:d30ed6450e32
558 | | | | | parent: 20:d30ed6450e32
559 | | | | | user: test
559 | | | | | user: test
560 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
560 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
561 | | | | | summary: (21) expand
561 | | | | | summary: (21) expand
562 | | | | |
562 | | | | |
563 | o---+-+ changeset: 20:d30ed6450e32
563 | o---+-+ changeset: 20:d30ed6450e32
564 | | | | parent: 0:e6eb3150255d
564 | | | | parent: 0:e6eb3150255d
565 | / / / parent: 18:1aa84d96232a
565 | / / / parent: 18:1aa84d96232a
566 | | | | user: test
566 | | | | user: test
567 | | | | date: Thu Jan 01 00:00:20 1970 +0000
567 | | | | date: Thu Jan 01 00:00:20 1970 +0000
568 | | | | summary: (20) merge two known; two far right
568 | | | | summary: (20) merge two known; two far right
569 | | | |
569 | | | |
570 o | | | changeset: 19:31ddc2c1573b
570 o | | | changeset: 19:31ddc2c1573b
571 |\ \ \ \ parent: 15:1dda3f72782d
571 |\ \ \ \ parent: 15:1dda3f72782d
572 | | | | | parent: 17:44765d7c06e0
572 | | | | | parent: 17:44765d7c06e0
573 | | | | | user: test
573 | | | | | user: test
574 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
574 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
575 | | | | | summary: (19) expand
575 | | | | | summary: (19) expand
576 | | | | |
576 | | | | |
577 +---+---o changeset: 18:1aa84d96232a
577 +---+---o changeset: 18:1aa84d96232a
578 | | | | parent: 1:6db2ef61d156
578 | | | | parent: 1:6db2ef61d156
579 | | | | parent: 15:1dda3f72782d
579 | | | | parent: 15:1dda3f72782d
580 | | | | user: test
580 | | | | user: test
581 | | | | date: Thu Jan 01 00:00:18 1970 +0000
581 | | | | date: Thu Jan 01 00:00:18 1970 +0000
582 | | | | summary: (18) merge two known; two far left
582 | | | | summary: (18) merge two known; two far left
583 | | | |
583 | | | |
584 | o | | changeset: 17:44765d7c06e0
584 | o | | changeset: 17:44765d7c06e0
585 | |\ \ \ parent: 12:86b91144a6e9
585 | |\ \ \ parent: 12:86b91144a6e9
586 | | | | | parent: 16:3677d192927d
586 | | | | | parent: 16:3677d192927d
587 | | | | | user: test
587 | | | | | user: test
588 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
588 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
589 | | | | | summary: (17) expand
589 | | | | | summary: (17) expand
590 | | | | |
590 | | | | |
591 | | o---+ changeset: 16:3677d192927d
591 | | o---+ changeset: 16:3677d192927d
592 | | | | | parent: 0:e6eb3150255d
592 | | | | | parent: 0:e6eb3150255d
593 | | |/ / parent: 1:6db2ef61d156
593 | | |/ / parent: 1:6db2ef61d156
594 | | | | user: test
594 | | | | user: test
595 | | | | date: Thu Jan 01 00:00:16 1970 +0000
595 | | | | date: Thu Jan 01 00:00:16 1970 +0000
596 | | | | summary: (16) merge two known; one immediate right, one near right
596 | | | | summary: (16) merge two known; one immediate right, one near right
597 | | | |
597 | | | |
598 o | | | changeset: 15:1dda3f72782d
598 o | | | changeset: 15:1dda3f72782d
599 |\ \ \ \ parent: 13:22d8966a97e3
599 |\ \ \ \ parent: 13:22d8966a97e3
600 | | | | | parent: 14:8eac370358ef
600 | | | | | parent: 14:8eac370358ef
601 | | | | | user: test
601 | | | | | user: test
602 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
602 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
603 | | | | | summary: (15) expand
603 | | | | | summary: (15) expand
604 | | | | |
604 | | | | |
605 | o-----+ changeset: 14:8eac370358ef
605 | o-----+ changeset: 14:8eac370358ef
606 | | | | | parent: 0:e6eb3150255d
606 | | | | | parent: 0:e6eb3150255d
607 | |/ / / parent: 12:86b91144a6e9
607 | |/ / / parent: 12:86b91144a6e9
608 | | | | user: test
608 | | | | user: test
609 | | | | date: Thu Jan 01 00:00:14 1970 +0000
609 | | | | date: Thu Jan 01 00:00:14 1970 +0000
610 | | | | summary: (14) merge two known; one immediate right, one far right
610 | | | | summary: (14) merge two known; one immediate right, one far right
611 | | | |
611 | | | |
612 o | | | changeset: 13:22d8966a97e3
612 o | | | changeset: 13:22d8966a97e3
613 |\ \ \ \ parent: 9:7010c0af0a35
613 |\ \ \ \ parent: 9:7010c0af0a35
614 | | | | | parent: 11:832d76e6bdf2
614 | | | | | parent: 11:832d76e6bdf2
615 | | | | | user: test
615 | | | | | user: test
616 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
616 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
617 | | | | | summary: (13) expand
617 | | | | | summary: (13) expand
618 | | | | |
618 | | | | |
619 +---o | | changeset: 12:86b91144a6e9
619 +---o | | changeset: 12:86b91144a6e9
620 | | |/ / parent: 1:6db2ef61d156
620 | | |/ / parent: 1:6db2ef61d156
621 | | | | parent: 9:7010c0af0a35
621 | | | | parent: 9:7010c0af0a35
622 | | | | user: test
622 | | | | user: test
623 | | | | date: Thu Jan 01 00:00:12 1970 +0000
623 | | | | date: Thu Jan 01 00:00:12 1970 +0000
624 | | | | summary: (12) merge two known; one immediate right, one far left
624 | | | | summary: (12) merge two known; one immediate right, one far left
625 | | | |
625 | | | |
626 | o | | changeset: 11:832d76e6bdf2
626 | o | | changeset: 11:832d76e6bdf2
627 | |\ \ \ parent: 6:b105a072e251
627 | |\ \ \ parent: 6:b105a072e251
628 | | | | | parent: 10:74c64d036d72
628 | | | | | parent: 10:74c64d036d72
629 | | | | | user: test
629 | | | | | user: test
630 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
630 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
631 | | | | | summary: (11) expand
631 | | | | | summary: (11) expand
632 | | | | |
632 | | | | |
633 | | o---+ changeset: 10:74c64d036d72
633 | | o---+ changeset: 10:74c64d036d72
634 | | | | | parent: 0:e6eb3150255d
634 | | | | | parent: 0:e6eb3150255d
635 | |/ / / parent: 6:b105a072e251
635 | |/ / / parent: 6:b105a072e251
636 | | | | user: test
636 | | | | user: test
637 | | | | date: Thu Jan 01 00:00:10 1970 +0000
637 | | | | date: Thu Jan 01 00:00:10 1970 +0000
638 | | | | summary: (10) merge two known; one immediate left, one near right
638 | | | | summary: (10) merge two known; one immediate left, one near right
639 | | | |
639 | | | |
640 o | | | changeset: 9:7010c0af0a35
640 o | | | changeset: 9:7010c0af0a35
641 |\ \ \ \ parent: 7:b632bb1b1224
641 |\ \ \ \ parent: 7:b632bb1b1224
642 | | | | | parent: 8:7a0b11f71937
642 | | | | | parent: 8:7a0b11f71937
643 | | | | | user: test
643 | | | | | user: test
644 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
644 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
645 | | | | | summary: (9) expand
645 | | | | | summary: (9) expand
646 | | | | |
646 | | | | |
647 | o-----+ changeset: 8:7a0b11f71937
647 | o-----+ changeset: 8:7a0b11f71937
648 | | | | | parent: 0:e6eb3150255d
648 | | | | | parent: 0:e6eb3150255d
649 |/ / / / parent: 7:b632bb1b1224
649 |/ / / / parent: 7:b632bb1b1224
650 | | | | user: test
650 | | | | user: test
651 | | | | date: Thu Jan 01 00:00:08 1970 +0000
651 | | | | date: Thu Jan 01 00:00:08 1970 +0000
652 | | | | summary: (8) merge two known; one immediate left, one far right
652 | | | | summary: (8) merge two known; one immediate left, one far right
653 | | | |
653 | | | |
654 o | | | changeset: 7:b632bb1b1224
654 o | | | changeset: 7:b632bb1b1224
655 |\ \ \ \ parent: 2:3d9a33b8d1e1
655 |\ \ \ \ parent: 2:3d9a33b8d1e1
656 | | | | | parent: 5:4409d547b708
656 | | | | | parent: 5:4409d547b708
657 | | | | | user: test
657 | | | | | user: test
658 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
658 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
659 | | | | | summary: (7) expand
659 | | | | | summary: (7) expand
660 | | | | |
660 | | | | |
661 +---o | | changeset: 6:b105a072e251
661 +---o | | changeset: 6:b105a072e251
662 | |/ / / parent: 2:3d9a33b8d1e1
662 | |/ / / parent: 2:3d9a33b8d1e1
663 | | | | parent: 5:4409d547b708
663 | | | | parent: 5:4409d547b708
664 | | | | user: test
664 | | | | user: test
665 | | | | date: Thu Jan 01 00:00:06 1970 +0000
665 | | | | date: Thu Jan 01 00:00:06 1970 +0000
666 | | | | summary: (6) merge two known; one immediate left, one far left
666 | | | | summary: (6) merge two known; one immediate left, one far left
667 | | | |
667 | | | |
668 | o | | changeset: 5:4409d547b708
668 | o | | changeset: 5:4409d547b708
669 | |\ \ \ parent: 3:27eef8ed80b4
669 | |\ \ \ parent: 3:27eef8ed80b4
670 | | | | | parent: 4:26a8bac39d9f
670 | | | | | parent: 4:26a8bac39d9f
671 | | | | | user: test
671 | | | | | user: test
672 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
672 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
673 | | | | | summary: (5) expand
673 | | | | | summary: (5) expand
674 | | | | |
674 | | | | |
675 | | o | | changeset: 4:26a8bac39d9f
675 | | o | | changeset: 4:26a8bac39d9f
676 | |/|/ / parent: 1:6db2ef61d156
676 | |/|/ / parent: 1:6db2ef61d156
677 | | | | parent: 3:27eef8ed80b4
677 | | | | parent: 3:27eef8ed80b4
678 | | | | user: test
678 | | | | user: test
679 | | | | date: Thu Jan 01 00:00:04 1970 +0000
679 | | | | date: Thu Jan 01 00:00:04 1970 +0000
680 | | | | summary: (4) merge two known; one immediate left, one immediate right
680 | | | | summary: (4) merge two known; one immediate left, one immediate right
681 | | | |
681 | | | |
682 | o | | changeset: 3:27eef8ed80b4
682 | o | | changeset: 3:27eef8ed80b4
683 |/ / / user: test
683 |/ / / user: test
684 | | | date: Thu Jan 01 00:00:03 1970 +0000
684 | | | date: Thu Jan 01 00:00:03 1970 +0000
685 | | | summary: (3) collapse
685 | | | summary: (3) collapse
686 | | |
686 | | |
687 o | | changeset: 2:3d9a33b8d1e1
687 o | | changeset: 2:3d9a33b8d1e1
688 |/ / user: test
688 |/ / user: test
689 | | date: Thu Jan 01 00:00:02 1970 +0000
689 | | date: Thu Jan 01 00:00:02 1970 +0000
690 | | summary: (2) collapse
690 | | summary: (2) collapse
691 | |
691 | |
692 o | changeset: 1:6db2ef61d156
692 o | changeset: 1:6db2ef61d156
693 |/ user: test
693 |/ user: test
694 | date: Thu Jan 01 00:00:01 1970 +0000
694 | date: Thu Jan 01 00:00:01 1970 +0000
695 | summary: (1) collapse
695 | summary: (1) collapse
696 |
696 |
697 o changeset: 0:e6eb3150255d
697 o changeset: 0:e6eb3150255d
698 user: test
698 user: test
699 date: Thu Jan 01 00:00:00 1970 +0000
699 date: Thu Jan 01 00:00:00 1970 +0000
700 summary: (0) root
700 summary: (0) root
701
701
702
702
703 File glog per revset:
703 File glog per revset:
704
704
705 $ hg glog -r 'file("a")'
705 $ hg glog -r 'file("a")'
706 @ changeset: 34:fea3ac5810e0
706 @ changeset: 34:fea3ac5810e0
707 | tag: tip
707 | tag: tip
708 | parent: 32:d06dffa21a31
708 | parent: 32:d06dffa21a31
709 | user: test
709 | user: test
710 | date: Thu Jan 01 00:00:34 1970 +0000
710 | date: Thu Jan 01 00:00:34 1970 +0000
711 | summary: (34) head
711 | summary: (34) head
712 |
712 |
713 | o changeset: 33:68608f5145f9
713 | o changeset: 33:68608f5145f9
714 | | parent: 18:1aa84d96232a
714 | | parent: 18:1aa84d96232a
715 | | user: test
715 | | user: test
716 | | date: Thu Jan 01 00:00:33 1970 +0000
716 | | date: Thu Jan 01 00:00:33 1970 +0000
717 | | summary: (33) head
717 | | summary: (33) head
718 | |
718 | |
719 o | changeset: 32:d06dffa21a31
719 o | changeset: 32:d06dffa21a31
720 |\ \ parent: 27:886ed638191b
720 |\ \ parent: 27:886ed638191b
721 | | | parent: 31:621d83e11f67
721 | | | parent: 31:621d83e11f67
722 | | | user: test
722 | | | user: test
723 | | | date: Thu Jan 01 00:00:32 1970 +0000
723 | | | date: Thu Jan 01 00:00:32 1970 +0000
724 | | | summary: (32) expand
724 | | | summary: (32) expand
725 | | |
725 | | |
726 | o | changeset: 31:621d83e11f67
726 | o | changeset: 31:621d83e11f67
727 | |\ \ parent: 21:d42a756af44d
727 | |\ \ parent: 21:d42a756af44d
728 | | | | parent: 30:6e11cd4b648f
728 | | | | parent: 30:6e11cd4b648f
729 | | | | user: test
729 | | | | user: test
730 | | | | date: Thu Jan 01 00:00:31 1970 +0000
730 | | | | date: Thu Jan 01 00:00:31 1970 +0000
731 | | | | summary: (31) expand
731 | | | | summary: (31) expand
732 | | | |
732 | | | |
733 | | o | changeset: 30:6e11cd4b648f
733 | | o | changeset: 30:6e11cd4b648f
734 | | |\ \ parent: 28:44ecd0b9ae99
734 | | |\ \ parent: 28:44ecd0b9ae99
735 | | | | | parent: 29:cd9bb2be7593
735 | | | | | parent: 29:cd9bb2be7593
736 | | | | | user: test
736 | | | | | user: test
737 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
737 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
738 | | | | | summary: (30) expand
738 | | | | | summary: (30) expand
739 | | | | |
739 | | | | |
740 | | | o | changeset: 29:cd9bb2be7593
740 | | | o | changeset: 29:cd9bb2be7593
741 | | | | | parent: 0:e6eb3150255d
741 | | | | | parent: 0:e6eb3150255d
742 | | | | | user: test
742 | | | | | user: test
743 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
743 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
744 | | | | | summary: (29) regular commit
744 | | | | | summary: (29) regular commit
745 | | | | |
745 | | | | |
746 | | o | | changeset: 28:44ecd0b9ae99
746 | | o | | changeset: 28:44ecd0b9ae99
747 | | |\ \ \ parent: 1:6db2ef61d156
747 | | |\ \ \ parent: 1:6db2ef61d156
748 | | | | | | parent: 26:7f25b6c2f0b9
748 | | | | | | parent: 26:7f25b6c2f0b9
749 | | | | | | user: test
749 | | | | | | user: test
750 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
750 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
751 | | | | | | summary: (28) merge zero known
751 | | | | | | summary: (28) merge zero known
752 | | | | | |
752 | | | | | |
753 o | | | | | changeset: 27:886ed638191b
753 o | | | | | changeset: 27:886ed638191b
754 |/ / / / / parent: 21:d42a756af44d
754 |/ / / / / parent: 21:d42a756af44d
755 | | | | | user: test
755 | | | | | user: test
756 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
756 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
757 | | | | | summary: (27) collapse
757 | | | | | summary: (27) collapse
758 | | | | |
758 | | | | |
759 | | o---+ changeset: 26:7f25b6c2f0b9
759 | | o---+ changeset: 26:7f25b6c2f0b9
760 | | | | | parent: 18:1aa84d96232a
760 | | | | | parent: 18:1aa84d96232a
761 | | | | | parent: 25:91da8ed57247
761 | | | | | parent: 25:91da8ed57247
762 | | | | | user: test
762 | | | | | user: test
763 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
763 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
764 | | | | | summary: (26) merge one known; far right
764 | | | | | summary: (26) merge one known; far right
765 | | | | |
765 | | | | |
766 +---o | | changeset: 25:91da8ed57247
766 +---o | | changeset: 25:91da8ed57247
767 | | | | | parent: 21:d42a756af44d
767 | | | | | parent: 21:d42a756af44d
768 | | | | | parent: 24:a9c19a3d96b7
768 | | | | | parent: 24:a9c19a3d96b7
769 | | | | | user: test
769 | | | | | user: test
770 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
770 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
771 | | | | | summary: (25) merge one known; far left
771 | | | | | summary: (25) merge one known; far left
772 | | | | |
772 | | | | |
773 | | o | | changeset: 24:a9c19a3d96b7
773 | | o | | changeset: 24:a9c19a3d96b7
774 | | |\| | parent: 0:e6eb3150255d
774 | | |\| | parent: 0:e6eb3150255d
775 | | | | | parent: 23:a01cddf0766d
775 | | | | | parent: 23:a01cddf0766d
776 | | | | | user: test
776 | | | | | user: test
777 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
777 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
778 | | | | | summary: (24) merge one known; immediate right
778 | | | | | summary: (24) merge one known; immediate right
779 | | | | |
779 | | | | |
780 | | o | | changeset: 23:a01cddf0766d
780 | | o | | changeset: 23:a01cddf0766d
781 | |/| | | parent: 1:6db2ef61d156
781 | |/| | | parent: 1:6db2ef61d156
782 | | | | | parent: 22:e0d9cccacb5d
782 | | | | | parent: 22:e0d9cccacb5d
783 | | | | | user: test
783 | | | | | user: test
784 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
784 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
785 | | | | | summary: (23) merge one known; immediate left
785 | | | | | summary: (23) merge one known; immediate left
786 | | | | |
786 | | | | |
787 +---o---+ changeset: 22:e0d9cccacb5d
787 +---o---+ changeset: 22:e0d9cccacb5d
788 | | | | parent: 18:1aa84d96232a
788 | | | | parent: 18:1aa84d96232a
789 | | / / parent: 21:d42a756af44d
789 | | / / parent: 21:d42a756af44d
790 | | | | user: test
790 | | | | user: test
791 | | | | date: Thu Jan 01 00:00:22 1970 +0000
791 | | | | date: Thu Jan 01 00:00:22 1970 +0000
792 | | | | summary: (22) merge two known; one far left, one far right
792 | | | | summary: (22) merge two known; one far left, one far right
793 | | | |
793 | | | |
794 o | | | changeset: 21:d42a756af44d
794 o | | | changeset: 21:d42a756af44d
795 |\ \ \ \ parent: 19:31ddc2c1573b
795 |\ \ \ \ parent: 19:31ddc2c1573b
796 | | | | | parent: 20:d30ed6450e32
796 | | | | | parent: 20:d30ed6450e32
797 | | | | | user: test
797 | | | | | user: test
798 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
798 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
799 | | | | | summary: (21) expand
799 | | | | | summary: (21) expand
800 | | | | |
800 | | | | |
801 | o---+-+ changeset: 20:d30ed6450e32
801 | o---+-+ changeset: 20:d30ed6450e32
802 | | | | parent: 0:e6eb3150255d
802 | | | | parent: 0:e6eb3150255d
803 | / / / parent: 18:1aa84d96232a
803 | / / / parent: 18:1aa84d96232a
804 | | | | user: test
804 | | | | user: test
805 | | | | date: Thu Jan 01 00:00:20 1970 +0000
805 | | | | date: Thu Jan 01 00:00:20 1970 +0000
806 | | | | summary: (20) merge two known; two far right
806 | | | | summary: (20) merge two known; two far right
807 | | | |
807 | | | |
808 o | | | changeset: 19:31ddc2c1573b
808 o | | | changeset: 19:31ddc2c1573b
809 |\ \ \ \ parent: 15:1dda3f72782d
809 |\ \ \ \ parent: 15:1dda3f72782d
810 | | | | | parent: 17:44765d7c06e0
810 | | | | | parent: 17:44765d7c06e0
811 | | | | | user: test
811 | | | | | user: test
812 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
812 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
813 | | | | | summary: (19) expand
813 | | | | | summary: (19) expand
814 | | | | |
814 | | | | |
815 +---+---o changeset: 18:1aa84d96232a
815 +---+---o changeset: 18:1aa84d96232a
816 | | | | parent: 1:6db2ef61d156
816 | | | | parent: 1:6db2ef61d156
817 | | | | parent: 15:1dda3f72782d
817 | | | | parent: 15:1dda3f72782d
818 | | | | user: test
818 | | | | user: test
819 | | | | date: Thu Jan 01 00:00:18 1970 +0000
819 | | | | date: Thu Jan 01 00:00:18 1970 +0000
820 | | | | summary: (18) merge two known; two far left
820 | | | | summary: (18) merge two known; two far left
821 | | | |
821 | | | |
822 | o | | changeset: 17:44765d7c06e0
822 | o | | changeset: 17:44765d7c06e0
823 | |\ \ \ parent: 12:86b91144a6e9
823 | |\ \ \ parent: 12:86b91144a6e9
824 | | | | | parent: 16:3677d192927d
824 | | | | | parent: 16:3677d192927d
825 | | | | | user: test
825 | | | | | user: test
826 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
826 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
827 | | | | | summary: (17) expand
827 | | | | | summary: (17) expand
828 | | | | |
828 | | | | |
829 | | o---+ changeset: 16:3677d192927d
829 | | o---+ changeset: 16:3677d192927d
830 | | | | | parent: 0:e6eb3150255d
830 | | | | | parent: 0:e6eb3150255d
831 | | |/ / parent: 1:6db2ef61d156
831 | | |/ / parent: 1:6db2ef61d156
832 | | | | user: test
832 | | | | user: test
833 | | | | date: Thu Jan 01 00:00:16 1970 +0000
833 | | | | date: Thu Jan 01 00:00:16 1970 +0000
834 | | | | summary: (16) merge two known; one immediate right, one near right
834 | | | | summary: (16) merge two known; one immediate right, one near right
835 | | | |
835 | | | |
836 o | | | changeset: 15:1dda3f72782d
836 o | | | changeset: 15:1dda3f72782d
837 |\ \ \ \ parent: 13:22d8966a97e3
837 |\ \ \ \ parent: 13:22d8966a97e3
838 | | | | | parent: 14:8eac370358ef
838 | | | | | parent: 14:8eac370358ef
839 | | | | | user: test
839 | | | | | user: test
840 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
840 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
841 | | | | | summary: (15) expand
841 | | | | | summary: (15) expand
842 | | | | |
842 | | | | |
843 | o-----+ changeset: 14:8eac370358ef
843 | o-----+ changeset: 14:8eac370358ef
844 | | | | | parent: 0:e6eb3150255d
844 | | | | | parent: 0:e6eb3150255d
845 | |/ / / parent: 12:86b91144a6e9
845 | |/ / / parent: 12:86b91144a6e9
846 | | | | user: test
846 | | | | user: test
847 | | | | date: Thu Jan 01 00:00:14 1970 +0000
847 | | | | date: Thu Jan 01 00:00:14 1970 +0000
848 | | | | summary: (14) merge two known; one immediate right, one far right
848 | | | | summary: (14) merge two known; one immediate right, one far right
849 | | | |
849 | | | |
850 o | | | changeset: 13:22d8966a97e3
850 o | | | changeset: 13:22d8966a97e3
851 |\ \ \ \ parent: 9:7010c0af0a35
851 |\ \ \ \ parent: 9:7010c0af0a35
852 | | | | | parent: 11:832d76e6bdf2
852 | | | | | parent: 11:832d76e6bdf2
853 | | | | | user: test
853 | | | | | user: test
854 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
854 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
855 | | | | | summary: (13) expand
855 | | | | | summary: (13) expand
856 | | | | |
856 | | | | |
857 +---o | | changeset: 12:86b91144a6e9
857 +---o | | changeset: 12:86b91144a6e9
858 | | |/ / parent: 1:6db2ef61d156
858 | | |/ / parent: 1:6db2ef61d156
859 | | | | parent: 9:7010c0af0a35
859 | | | | parent: 9:7010c0af0a35
860 | | | | user: test
860 | | | | user: test
861 | | | | date: Thu Jan 01 00:00:12 1970 +0000
861 | | | | date: Thu Jan 01 00:00:12 1970 +0000
862 | | | | summary: (12) merge two known; one immediate right, one far left
862 | | | | summary: (12) merge two known; one immediate right, one far left
863 | | | |
863 | | | |
864 | o | | changeset: 11:832d76e6bdf2
864 | o | | changeset: 11:832d76e6bdf2
865 | |\ \ \ parent: 6:b105a072e251
865 | |\ \ \ parent: 6:b105a072e251
866 | | | | | parent: 10:74c64d036d72
866 | | | | | parent: 10:74c64d036d72
867 | | | | | user: test
867 | | | | | user: test
868 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
868 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
869 | | | | | summary: (11) expand
869 | | | | | summary: (11) expand
870 | | | | |
870 | | | | |
871 | | o---+ changeset: 10:74c64d036d72
871 | | o---+ changeset: 10:74c64d036d72
872 | | | | | parent: 0:e6eb3150255d
872 | | | | | parent: 0:e6eb3150255d
873 | |/ / / parent: 6:b105a072e251
873 | |/ / / parent: 6:b105a072e251
874 | | | | user: test
874 | | | | user: test
875 | | | | date: Thu Jan 01 00:00:10 1970 +0000
875 | | | | date: Thu Jan 01 00:00:10 1970 +0000
876 | | | | summary: (10) merge two known; one immediate left, one near right
876 | | | | summary: (10) merge two known; one immediate left, one near right
877 | | | |
877 | | | |
878 o | | | changeset: 9:7010c0af0a35
878 o | | | changeset: 9:7010c0af0a35
879 |\ \ \ \ parent: 7:b632bb1b1224
879 |\ \ \ \ parent: 7:b632bb1b1224
880 | | | | | parent: 8:7a0b11f71937
880 | | | | | parent: 8:7a0b11f71937
881 | | | | | user: test
881 | | | | | user: test
882 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
882 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
883 | | | | | summary: (9) expand
883 | | | | | summary: (9) expand
884 | | | | |
884 | | | | |
885 | o-----+ changeset: 8:7a0b11f71937
885 | o-----+ changeset: 8:7a0b11f71937
886 | | | | | parent: 0:e6eb3150255d
886 | | | | | parent: 0:e6eb3150255d
887 |/ / / / parent: 7:b632bb1b1224
887 |/ / / / parent: 7:b632bb1b1224
888 | | | | user: test
888 | | | | user: test
889 | | | | date: Thu Jan 01 00:00:08 1970 +0000
889 | | | | date: Thu Jan 01 00:00:08 1970 +0000
890 | | | | summary: (8) merge two known; one immediate left, one far right
890 | | | | summary: (8) merge two known; one immediate left, one far right
891 | | | |
891 | | | |
892 o | | | changeset: 7:b632bb1b1224
892 o | | | changeset: 7:b632bb1b1224
893 |\ \ \ \ parent: 2:3d9a33b8d1e1
893 |\ \ \ \ parent: 2:3d9a33b8d1e1
894 | | | | | parent: 5:4409d547b708
894 | | | | | parent: 5:4409d547b708
895 | | | | | user: test
895 | | | | | user: test
896 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
896 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
897 | | | | | summary: (7) expand
897 | | | | | summary: (7) expand
898 | | | | |
898 | | | | |
899 +---o | | changeset: 6:b105a072e251
899 +---o | | changeset: 6:b105a072e251
900 | |/ / / parent: 2:3d9a33b8d1e1
900 | |/ / / parent: 2:3d9a33b8d1e1
901 | | | | parent: 5:4409d547b708
901 | | | | parent: 5:4409d547b708
902 | | | | user: test
902 | | | | user: test
903 | | | | date: Thu Jan 01 00:00:06 1970 +0000
903 | | | | date: Thu Jan 01 00:00:06 1970 +0000
904 | | | | summary: (6) merge two known; one immediate left, one far left
904 | | | | summary: (6) merge two known; one immediate left, one far left
905 | | | |
905 | | | |
906 | o | | changeset: 5:4409d547b708
906 | o | | changeset: 5:4409d547b708
907 | |\ \ \ parent: 3:27eef8ed80b4
907 | |\ \ \ parent: 3:27eef8ed80b4
908 | | | | | parent: 4:26a8bac39d9f
908 | | | | | parent: 4:26a8bac39d9f
909 | | | | | user: test
909 | | | | | user: test
910 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
910 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
911 | | | | | summary: (5) expand
911 | | | | | summary: (5) expand
912 | | | | |
912 | | | | |
913 | | o | | changeset: 4:26a8bac39d9f
913 | | o | | changeset: 4:26a8bac39d9f
914 | |/|/ / parent: 1:6db2ef61d156
914 | |/|/ / parent: 1:6db2ef61d156
915 | | | | parent: 3:27eef8ed80b4
915 | | | | parent: 3:27eef8ed80b4
916 | | | | user: test
916 | | | | user: test
917 | | | | date: Thu Jan 01 00:00:04 1970 +0000
917 | | | | date: Thu Jan 01 00:00:04 1970 +0000
918 | | | | summary: (4) merge two known; one immediate left, one immediate right
918 | | | | summary: (4) merge two known; one immediate left, one immediate right
919 | | | |
919 | | | |
920 | o | | changeset: 3:27eef8ed80b4
920 | o | | changeset: 3:27eef8ed80b4
921 |/ / / user: test
921 |/ / / user: test
922 | | | date: Thu Jan 01 00:00:03 1970 +0000
922 | | | date: Thu Jan 01 00:00:03 1970 +0000
923 | | | summary: (3) collapse
923 | | | summary: (3) collapse
924 | | |
924 | | |
925 o | | changeset: 2:3d9a33b8d1e1
925 o | | changeset: 2:3d9a33b8d1e1
926 |/ / user: test
926 |/ / user: test
927 | | date: Thu Jan 01 00:00:02 1970 +0000
927 | | date: Thu Jan 01 00:00:02 1970 +0000
928 | | summary: (2) collapse
928 | | summary: (2) collapse
929 | |
929 | |
930 o | changeset: 1:6db2ef61d156
930 o | changeset: 1:6db2ef61d156
931 |/ user: test
931 |/ user: test
932 | date: Thu Jan 01 00:00:01 1970 +0000
932 | date: Thu Jan 01 00:00:01 1970 +0000
933 | summary: (1) collapse
933 | summary: (1) collapse
934 |
934 |
935 o changeset: 0:e6eb3150255d
935 o changeset: 0:e6eb3150255d
936 user: test
936 user: test
937 date: Thu Jan 01 00:00:00 1970 +0000
937 date: Thu Jan 01 00:00:00 1970 +0000
938 summary: (0) root
938 summary: (0) root
939
939
940
940
941
941
942 File glog per revset (only merges):
942 File glog per revset (only merges):
943
943
944 $ hg log -G -r 'file("a")' -m
944 $ hg log -G -r 'file("a")' -m
945 o changeset: 32:d06dffa21a31
945 o changeset: 32:d06dffa21a31
946 |\ parent: 27:886ed638191b
946 |\ parent: 27:886ed638191b
947 | | parent: 31:621d83e11f67
947 | | parent: 31:621d83e11f67
948 | | user: test
948 | | user: test
949 | | date: Thu Jan 01 00:00:32 1970 +0000
949 | | date: Thu Jan 01 00:00:32 1970 +0000
950 | | summary: (32) expand
950 | | summary: (32) expand
951 | |
951 | |
952 o | changeset: 31:621d83e11f67
952 o | changeset: 31:621d83e11f67
953 |\| parent: 21:d42a756af44d
953 |\| parent: 21:d42a756af44d
954 | | parent: 30:6e11cd4b648f
954 | | parent: 30:6e11cd4b648f
955 | | user: test
955 | | user: test
956 | | date: Thu Jan 01 00:00:31 1970 +0000
956 | | date: Thu Jan 01 00:00:31 1970 +0000
957 | | summary: (31) expand
957 | | summary: (31) expand
958 | |
958 | |
959 o | changeset: 30:6e11cd4b648f
959 o | changeset: 30:6e11cd4b648f
960 |\ \ parent: 28:44ecd0b9ae99
960 |\ \ parent: 28:44ecd0b9ae99
961 | | | parent: 29:cd9bb2be7593
961 | | | parent: 29:cd9bb2be7593
962 | | | user: test
962 | | | user: test
963 | | | date: Thu Jan 01 00:00:30 1970 +0000
963 | | | date: Thu Jan 01 00:00:30 1970 +0000
964 | | | summary: (30) expand
964 | | | summary: (30) expand
965 | | |
965 | | |
966 o | | changeset: 28:44ecd0b9ae99
966 o | | changeset: 28:44ecd0b9ae99
967 |\ \ \ parent: 1:6db2ef61d156
967 |\ \ \ parent: 1:6db2ef61d156
968 | | | | parent: 26:7f25b6c2f0b9
968 | | | | parent: 26:7f25b6c2f0b9
969 | | | | user: test
969 | | | | user: test
970 | | | | date: Thu Jan 01 00:00:28 1970 +0000
970 | | | | date: Thu Jan 01 00:00:28 1970 +0000
971 | | | | summary: (28) merge zero known
971 | | | | summary: (28) merge zero known
972 | | | |
972 | | | |
973 o | | | changeset: 26:7f25b6c2f0b9
973 o | | | changeset: 26:7f25b6c2f0b9
974 |\ \ \ \ parent: 18:1aa84d96232a
974 |\ \ \ \ parent: 18:1aa84d96232a
975 | | | | | parent: 25:91da8ed57247
975 | | | | | parent: 25:91da8ed57247
976 | | | | | user: test
976 | | | | | user: test
977 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
977 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
978 | | | | | summary: (26) merge one known; far right
978 | | | | | summary: (26) merge one known; far right
979 | | | | |
979 | | | | |
980 | o-----+ changeset: 25:91da8ed57247
980 | o-----+ changeset: 25:91da8ed57247
981 | | | | | parent: 21:d42a756af44d
981 | | | | | parent: 21:d42a756af44d
982 | | | | | parent: 24:a9c19a3d96b7
982 | | | | | parent: 24:a9c19a3d96b7
983 | | | | | user: test
983 | | | | | user: test
984 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
984 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
985 | | | | | summary: (25) merge one known; far left
985 | | | | | summary: (25) merge one known; far left
986 | | | | |
986 | | | | |
987 | o | | | changeset: 24:a9c19a3d96b7
987 | o | | | changeset: 24:a9c19a3d96b7
988 | |\ \ \ \ parent: 0:e6eb3150255d
988 | |\ \ \ \ parent: 0:e6eb3150255d
989 | | | | | | parent: 23:a01cddf0766d
989 | | | | | | parent: 23:a01cddf0766d
990 | | | | | | user: test
990 | | | | | | user: test
991 | | | | | | date: Thu Jan 01 00:00:24 1970 +0000
991 | | | | | | date: Thu Jan 01 00:00:24 1970 +0000
992 | | | | | | summary: (24) merge one known; immediate right
992 | | | | | | summary: (24) merge one known; immediate right
993 | | | | | |
993 | | | | | |
994 | o---+ | | changeset: 23:a01cddf0766d
994 | o---+ | | changeset: 23:a01cddf0766d
995 | | | | | | parent: 1:6db2ef61d156
995 | | | | | | parent: 1:6db2ef61d156
996 | | | | | | parent: 22:e0d9cccacb5d
996 | | | | | | parent: 22:e0d9cccacb5d
997 | | | | | | user: test
997 | | | | | | user: test
998 | | | | | | date: Thu Jan 01 00:00:23 1970 +0000
998 | | | | | | date: Thu Jan 01 00:00:23 1970 +0000
999 | | | | | | summary: (23) merge one known; immediate left
999 | | | | | | summary: (23) merge one known; immediate left
1000 | | | | | |
1000 | | | | | |
1001 | o-------+ changeset: 22:e0d9cccacb5d
1001 | o-------+ changeset: 22:e0d9cccacb5d
1002 | | | | | | parent: 18:1aa84d96232a
1002 | | | | | | parent: 18:1aa84d96232a
1003 |/ / / / / parent: 21:d42a756af44d
1003 |/ / / / / parent: 21:d42a756af44d
1004 | | | | | user: test
1004 | | | | | user: test
1005 | | | | | date: Thu Jan 01 00:00:22 1970 +0000
1005 | | | | | date: Thu Jan 01 00:00:22 1970 +0000
1006 | | | | | summary: (22) merge two known; one far left, one far right
1006 | | | | | summary: (22) merge two known; one far left, one far right
1007 | | | | |
1007 | | | | |
1008 | | | | o changeset: 21:d42a756af44d
1008 | | | | o changeset: 21:d42a756af44d
1009 | | | | |\ parent: 19:31ddc2c1573b
1009 | | | | |\ parent: 19:31ddc2c1573b
1010 | | | | | | parent: 20:d30ed6450e32
1010 | | | | | | parent: 20:d30ed6450e32
1011 | | | | | | user: test
1011 | | | | | | user: test
1012 | | | | | | date: Thu Jan 01 00:00:21 1970 +0000
1012 | | | | | | date: Thu Jan 01 00:00:21 1970 +0000
1013 | | | | | | summary: (21) expand
1013 | | | | | | summary: (21) expand
1014 | | | | | |
1014 | | | | | |
1015 +-+-------o changeset: 20:d30ed6450e32
1015 +-+-------o changeset: 20:d30ed6450e32
1016 | | | | | parent: 0:e6eb3150255d
1016 | | | | | parent: 0:e6eb3150255d
1017 | | | | | parent: 18:1aa84d96232a
1017 | | | | | parent: 18:1aa84d96232a
1018 | | | | | user: test
1018 | | | | | user: test
1019 | | | | | date: Thu Jan 01 00:00:20 1970 +0000
1019 | | | | | date: Thu Jan 01 00:00:20 1970 +0000
1020 | | | | | summary: (20) merge two known; two far right
1020 | | | | | summary: (20) merge two known; two far right
1021 | | | | |
1021 | | | | |
1022 | | | | o changeset: 19:31ddc2c1573b
1022 | | | | o changeset: 19:31ddc2c1573b
1023 | | | | |\ parent: 15:1dda3f72782d
1023 | | | | |\ parent: 15:1dda3f72782d
1024 | | | | | | parent: 17:44765d7c06e0
1024 | | | | | | parent: 17:44765d7c06e0
1025 | | | | | | user: test
1025 | | | | | | user: test
1026 | | | | | | date: Thu Jan 01 00:00:19 1970 +0000
1026 | | | | | | date: Thu Jan 01 00:00:19 1970 +0000
1027 | | | | | | summary: (19) expand
1027 | | | | | | summary: (19) expand
1028 | | | | | |
1028 | | | | | |
1029 o---+---+ | changeset: 18:1aa84d96232a
1029 o---+---+ | changeset: 18:1aa84d96232a
1030 | | | | | parent: 1:6db2ef61d156
1030 | | | | | parent: 1:6db2ef61d156
1031 / / / / / parent: 15:1dda3f72782d
1031 / / / / / parent: 15:1dda3f72782d
1032 | | | | | user: test
1032 | | | | | user: test
1033 | | | | | date: Thu Jan 01 00:00:18 1970 +0000
1033 | | | | | date: Thu Jan 01 00:00:18 1970 +0000
1034 | | | | | summary: (18) merge two known; two far left
1034 | | | | | summary: (18) merge two known; two far left
1035 | | | | |
1035 | | | | |
1036 | | | | o changeset: 17:44765d7c06e0
1036 | | | | o changeset: 17:44765d7c06e0
1037 | | | | |\ parent: 12:86b91144a6e9
1037 | | | | |\ parent: 12:86b91144a6e9
1038 | | | | | | parent: 16:3677d192927d
1038 | | | | | | parent: 16:3677d192927d
1039 | | | | | | user: test
1039 | | | | | | user: test
1040 | | | | | | date: Thu Jan 01 00:00:17 1970 +0000
1040 | | | | | | date: Thu Jan 01 00:00:17 1970 +0000
1041 | | | | | | summary: (17) expand
1041 | | | | | | summary: (17) expand
1042 | | | | | |
1042 | | | | | |
1043 +-+-------o changeset: 16:3677d192927d
1043 +-+-------o changeset: 16:3677d192927d
1044 | | | | | parent: 0:e6eb3150255d
1044 | | | | | parent: 0:e6eb3150255d
1045 | | | | | parent: 1:6db2ef61d156
1045 | | | | | parent: 1:6db2ef61d156
1046 | | | | | user: test
1046 | | | | | user: test
1047 | | | | | date: Thu Jan 01 00:00:16 1970 +0000
1047 | | | | | date: Thu Jan 01 00:00:16 1970 +0000
1048 | | | | | summary: (16) merge two known; one immediate right, one near right
1048 | | | | | summary: (16) merge two known; one immediate right, one near right
1049 | | | | |
1049 | | | | |
1050 | | | o | changeset: 15:1dda3f72782d
1050 | | | o | changeset: 15:1dda3f72782d
1051 | | | |\ \ parent: 13:22d8966a97e3
1051 | | | |\ \ parent: 13:22d8966a97e3
1052 | | | | | | parent: 14:8eac370358ef
1052 | | | | | | parent: 14:8eac370358ef
1053 | | | | | | user: test
1053 | | | | | | user: test
1054 | | | | | | date: Thu Jan 01 00:00:15 1970 +0000
1054 | | | | | | date: Thu Jan 01 00:00:15 1970 +0000
1055 | | | | | | summary: (15) expand
1055 | | | | | | summary: (15) expand
1056 | | | | | |
1056 | | | | | |
1057 +-------o | changeset: 14:8eac370358ef
1057 +-------o | changeset: 14:8eac370358ef
1058 | | | | |/ parent: 0:e6eb3150255d
1058 | | | | |/ parent: 0:e6eb3150255d
1059 | | | | | parent: 12:86b91144a6e9
1059 | | | | | parent: 12:86b91144a6e9
1060 | | | | | user: test
1060 | | | | | user: test
1061 | | | | | date: Thu Jan 01 00:00:14 1970 +0000
1061 | | | | | date: Thu Jan 01 00:00:14 1970 +0000
1062 | | | | | summary: (14) merge two known; one immediate right, one far right
1062 | | | | | summary: (14) merge two known; one immediate right, one far right
1063 | | | | |
1063 | | | | |
1064 | | | o | changeset: 13:22d8966a97e3
1064 | | | o | changeset: 13:22d8966a97e3
1065 | | | |\ \ parent: 9:7010c0af0a35
1065 | | | |\ \ parent: 9:7010c0af0a35
1066 | | | | | | parent: 11:832d76e6bdf2
1066 | | | | | | parent: 11:832d76e6bdf2
1067 | | | | | | user: test
1067 | | | | | | user: test
1068 | | | | | | date: Thu Jan 01 00:00:13 1970 +0000
1068 | | | | | | date: Thu Jan 01 00:00:13 1970 +0000
1069 | | | | | | summary: (13) expand
1069 | | | | | | summary: (13) expand
1070 | | | | | |
1070 | | | | | |
1071 | +---+---o changeset: 12:86b91144a6e9
1071 | +---+---o changeset: 12:86b91144a6e9
1072 | | | | | parent: 1:6db2ef61d156
1072 | | | | | parent: 1:6db2ef61d156
1073 | | | | | parent: 9:7010c0af0a35
1073 | | | | | parent: 9:7010c0af0a35
1074 | | | | | user: test
1074 | | | | | user: test
1075 | | | | | date: Thu Jan 01 00:00:12 1970 +0000
1075 | | | | | date: Thu Jan 01 00:00:12 1970 +0000
1076 | | | | | summary: (12) merge two known; one immediate right, one far left
1076 | | | | | summary: (12) merge two known; one immediate right, one far left
1077 | | | | |
1077 | | | | |
1078 | | | | o changeset: 11:832d76e6bdf2
1078 | | | | o changeset: 11:832d76e6bdf2
1079 | | | | |\ parent: 6:b105a072e251
1079 | | | | |\ parent: 6:b105a072e251
1080 | | | | | | parent: 10:74c64d036d72
1080 | | | | | | parent: 10:74c64d036d72
1081 | | | | | | user: test
1081 | | | | | | user: test
1082 | | | | | | date: Thu Jan 01 00:00:11 1970 +0000
1082 | | | | | | date: Thu Jan 01 00:00:11 1970 +0000
1083 | | | | | | summary: (11) expand
1083 | | | | | | summary: (11) expand
1084 | | | | | |
1084 | | | | | |
1085 +---------o changeset: 10:74c64d036d72
1085 +---------o changeset: 10:74c64d036d72
1086 | | | | |/ parent: 0:e6eb3150255d
1086 | | | | |/ parent: 0:e6eb3150255d
1087 | | | | | parent: 6:b105a072e251
1087 | | | | | parent: 6:b105a072e251
1088 | | | | | user: test
1088 | | | | | user: test
1089 | | | | | date: Thu Jan 01 00:00:10 1970 +0000
1089 | | | | | date: Thu Jan 01 00:00:10 1970 +0000
1090 | | | | | summary: (10) merge two known; one immediate left, one near right
1090 | | | | | summary: (10) merge two known; one immediate left, one near right
1091 | | | | |
1091 | | | | |
1092 | | | o | changeset: 9:7010c0af0a35
1092 | | | o | changeset: 9:7010c0af0a35
1093 | | | |\ \ parent: 7:b632bb1b1224
1093 | | | |\ \ parent: 7:b632bb1b1224
1094 | | | | | | parent: 8:7a0b11f71937
1094 | | | | | | parent: 8:7a0b11f71937
1095 | | | | | | user: test
1095 | | | | | | user: test
1096 | | | | | | date: Thu Jan 01 00:00:09 1970 +0000
1096 | | | | | | date: Thu Jan 01 00:00:09 1970 +0000
1097 | | | | | | summary: (9) expand
1097 | | | | | | summary: (9) expand
1098 | | | | | |
1098 | | | | | |
1099 +-------o | changeset: 8:7a0b11f71937
1099 +-------o | changeset: 8:7a0b11f71937
1100 | | | |/ / parent: 0:e6eb3150255d
1100 | | | |/ / parent: 0:e6eb3150255d
1101 | | | | | parent: 7:b632bb1b1224
1101 | | | | | parent: 7:b632bb1b1224
1102 | | | | | user: test
1102 | | | | | user: test
1103 | | | | | date: Thu Jan 01 00:00:08 1970 +0000
1103 | | | | | date: Thu Jan 01 00:00:08 1970 +0000
1104 | | | | | summary: (8) merge two known; one immediate left, one far right
1104 | | | | | summary: (8) merge two known; one immediate left, one far right
1105 | | | | |
1105 | | | | |
1106 | | | o | changeset: 7:b632bb1b1224
1106 | | | o | changeset: 7:b632bb1b1224
1107 | | | |\ \ parent: 2:3d9a33b8d1e1
1107 | | | |\ \ parent: 2:3d9a33b8d1e1
1108 | | | | | | parent: 5:4409d547b708
1108 | | | | | | parent: 5:4409d547b708
1109 | | | | | | user: test
1109 | | | | | | user: test
1110 | | | | | | date: Thu Jan 01 00:00:07 1970 +0000
1110 | | | | | | date: Thu Jan 01 00:00:07 1970 +0000
1111 | | | | | | summary: (7) expand
1111 | | | | | | summary: (7) expand
1112 | | | | | |
1112 | | | | | |
1113 | | | +---o changeset: 6:b105a072e251
1113 | | | +---o changeset: 6:b105a072e251
1114 | | | | |/ parent: 2:3d9a33b8d1e1
1114 | | | | |/ parent: 2:3d9a33b8d1e1
1115 | | | | | parent: 5:4409d547b708
1115 | | | | | parent: 5:4409d547b708
1116 | | | | | user: test
1116 | | | | | user: test
1117 | | | | | date: Thu Jan 01 00:00:06 1970 +0000
1117 | | | | | date: Thu Jan 01 00:00:06 1970 +0000
1118 | | | | | summary: (6) merge two known; one immediate left, one far left
1118 | | | | | summary: (6) merge two known; one immediate left, one far left
1119 | | | | |
1119 | | | | |
1120 | | | o | changeset: 5:4409d547b708
1120 | | | o | changeset: 5:4409d547b708
1121 | | | |\ \ parent: 3:27eef8ed80b4
1121 | | | |\ \ parent: 3:27eef8ed80b4
1122 | | | | | | parent: 4:26a8bac39d9f
1122 | | | | | | parent: 4:26a8bac39d9f
1123 | | | | | | user: test
1123 | | | | | | user: test
1124 | | | | | | date: Thu Jan 01 00:00:05 1970 +0000
1124 | | | | | | date: Thu Jan 01 00:00:05 1970 +0000
1125 | | | | | | summary: (5) expand
1125 | | | | | | summary: (5) expand
1126 | | | | | |
1126 | | | | | |
1127 | +---o | | changeset: 4:26a8bac39d9f
1127 | +---o | | changeset: 4:26a8bac39d9f
1128 | | | |/ / parent: 1:6db2ef61d156
1128 | | | |/ / parent: 1:6db2ef61d156
1129 | | | | | parent: 3:27eef8ed80b4
1129 | | | | | parent: 3:27eef8ed80b4
1130 | | | | | user: test
1130 | | | | | user: test
1131 | | | | | date: Thu Jan 01 00:00:04 1970 +0000
1131 | | | | | date: Thu Jan 01 00:00:04 1970 +0000
1132 | | | | | summary: (4) merge two known; one immediate left, one immediate right
1132 | | | | | summary: (4) merge two known; one immediate left, one immediate right
1133 | | | | |
1133 | | | | |
1134
1134
1135
1135
1136 Empty revision range - display nothing:
1136 Empty revision range - display nothing:
1137 $ hg glog -r 1..0
1137 $ hg glog -r 1..0
1138
1138
1139 From outer space:
1139 From outer space:
1140 $ cd ..
1140 $ cd ..
1141 $ hg glog -l1 repo
1141 $ hg glog -l1 repo
1142 @ changeset: 34:fea3ac5810e0
1142 @ changeset: 34:fea3ac5810e0
1143 | tag: tip
1143 | tag: tip
1144 | parent: 32:d06dffa21a31
1144 | parent: 32:d06dffa21a31
1145 | user: test
1145 | user: test
1146 | date: Thu Jan 01 00:00:34 1970 +0000
1146 | date: Thu Jan 01 00:00:34 1970 +0000
1147 | summary: (34) head
1147 | summary: (34) head
1148 |
1148 |
1149 $ hg glog -l1 repo/a
1149 $ hg glog -l1 repo/a
1150 @ changeset: 34:fea3ac5810e0
1150 @ changeset: 34:fea3ac5810e0
1151 | tag: tip
1151 | tag: tip
1152 | parent: 32:d06dffa21a31
1152 | parent: 32:d06dffa21a31
1153 | user: test
1153 | user: test
1154 | date: Thu Jan 01 00:00:34 1970 +0000
1154 | date: Thu Jan 01 00:00:34 1970 +0000
1155 | summary: (34) head
1155 | summary: (34) head
1156 |
1156 |
1157 $ hg glog -l1 repo/missing
1157 $ hg glog -l1 repo/missing
1158
1158
1159 File log with revs != cset revs:
1159 File log with revs != cset revs:
1160 $ hg init flog
1160 $ hg init flog
1161 $ cd flog
1161 $ cd flog
1162 $ echo one >one
1162 $ echo one >one
1163 $ hg add one
1163 $ hg add one
1164 $ hg commit -mone
1164 $ hg commit -mone
1165 $ echo two >two
1165 $ echo two >two
1166 $ hg add two
1166 $ hg add two
1167 $ hg commit -mtwo
1167 $ hg commit -mtwo
1168 $ echo more >two
1168 $ echo more >two
1169 $ hg commit -mmore
1169 $ hg commit -mmore
1170 $ hg glog two
1170 $ hg glog two
1171 @ changeset: 2:12c28321755b
1171 @ changeset: 2:12c28321755b
1172 | tag: tip
1172 | tag: tip
1173 | user: test
1173 | user: test
1174 | date: Thu Jan 01 00:00:00 1970 +0000
1174 | date: Thu Jan 01 00:00:00 1970 +0000
1175 | summary: more
1175 | summary: more
1176 |
1176 |
1177 o changeset: 1:5ac72c0599bf
1177 o changeset: 1:5ac72c0599bf
1178 | user: test
1178 | user: test
1179 | date: Thu Jan 01 00:00:00 1970 +0000
1179 | date: Thu Jan 01 00:00:00 1970 +0000
1180 | summary: two
1180 | summary: two
1181 |
1181 |
1182
1182
1183 Issue1896: File log with explicit style
1183 Issue1896: File log with explicit style
1184 $ hg glog --style=default one
1184 $ hg glog --style=default one
1185 o changeset: 0:3d578b4a1f53
1185 o changeset: 0:3d578b4a1f53
1186 user: test
1186 user: test
1187 date: Thu Jan 01 00:00:00 1970 +0000
1187 date: Thu Jan 01 00:00:00 1970 +0000
1188 summary: one
1188 summary: one
1189
1189
1190 Issue2395: glog --style header and footer
1190 Issue2395: glog --style header and footer
1191 $ hg glog --style=xml one
1191 $ hg glog --style=xml one
1192 <?xml version="1.0"?>
1192 <?xml version="1.0"?>
1193 <log>
1193 <log>
1194 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
1194 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
1195 <author email="test">test</author>
1195 <author email="test">test</author>
1196 <date>1970-01-01T00:00:00+00:00</date>
1196 <date>1970-01-01T00:00:00+00:00</date>
1197 <msg xml:space="preserve">one</msg>
1197 <msg xml:space="preserve">one</msg>
1198 </logentry>
1198 </logentry>
1199 </log>
1199 </log>
1200
1200
1201 $ cd ..
1201 $ cd ..
1202
1202
1203 Incoming and outgoing:
1203 Incoming and outgoing:
1204
1204
1205 $ hg clone -U -r31 repo repo2
1205 $ hg clone -U -r31 repo repo2
1206 adding changesets
1206 adding changesets
1207 adding manifests
1207 adding manifests
1208 adding file changes
1208 adding file changes
1209 added 31 changesets with 31 changes to 1 files
1209 added 31 changesets with 31 changes to 1 files
1210 $ cd repo2
1210 $ cd repo2
1211
1211
1212 $ hg incoming --graph ../repo
1212 $ hg incoming --graph ../repo
1213 comparing with ../repo
1213 comparing with ../repo
1214 searching for changes
1214 searching for changes
1215 o changeset: 34:fea3ac5810e0
1215 o changeset: 34:fea3ac5810e0
1216 | tag: tip
1216 | tag: tip
1217 | parent: 32:d06dffa21a31
1217 | parent: 32:d06dffa21a31
1218 | user: test
1218 | user: test
1219 | date: Thu Jan 01 00:00:34 1970 +0000
1219 | date: Thu Jan 01 00:00:34 1970 +0000
1220 | summary: (34) head
1220 | summary: (34) head
1221 |
1221 |
1222 | o changeset: 33:68608f5145f9
1222 | o changeset: 33:68608f5145f9
1223 | parent: 18:1aa84d96232a
1223 | parent: 18:1aa84d96232a
1224 | user: test
1224 | user: test
1225 | date: Thu Jan 01 00:00:33 1970 +0000
1225 | date: Thu Jan 01 00:00:33 1970 +0000
1226 | summary: (33) head
1226 | summary: (33) head
1227 |
1227 |
1228 o changeset: 32:d06dffa21a31
1228 o changeset: 32:d06dffa21a31
1229 | parent: 27:886ed638191b
1229 | parent: 27:886ed638191b
1230 | parent: 31:621d83e11f67
1230 | parent: 31:621d83e11f67
1231 | user: test
1231 | user: test
1232 | date: Thu Jan 01 00:00:32 1970 +0000
1232 | date: Thu Jan 01 00:00:32 1970 +0000
1233 | summary: (32) expand
1233 | summary: (32) expand
1234 |
1234 |
1235 o changeset: 27:886ed638191b
1235 o changeset: 27:886ed638191b
1236 parent: 21:d42a756af44d
1236 parent: 21:d42a756af44d
1237 user: test
1237 user: test
1238 date: Thu Jan 01 00:00:27 1970 +0000
1238 date: Thu Jan 01 00:00:27 1970 +0000
1239 summary: (27) collapse
1239 summary: (27) collapse
1240
1240
1241 $ cd ..
1241 $ cd ..
1242
1242
1243 $ hg -R repo outgoing --graph repo2
1243 $ hg -R repo outgoing --graph repo2
1244 comparing with repo2
1244 comparing with repo2
1245 searching for changes
1245 searching for changes
1246 @ changeset: 34:fea3ac5810e0
1246 @ changeset: 34:fea3ac5810e0
1247 | tag: tip
1247 | tag: tip
1248 | parent: 32:d06dffa21a31
1248 | parent: 32:d06dffa21a31
1249 | user: test
1249 | user: test
1250 | date: Thu Jan 01 00:00:34 1970 +0000
1250 | date: Thu Jan 01 00:00:34 1970 +0000
1251 | summary: (34) head
1251 | summary: (34) head
1252 |
1252 |
1253 | o changeset: 33:68608f5145f9
1253 | o changeset: 33:68608f5145f9
1254 | parent: 18:1aa84d96232a
1254 | parent: 18:1aa84d96232a
1255 | user: test
1255 | user: test
1256 | date: Thu Jan 01 00:00:33 1970 +0000
1256 | date: Thu Jan 01 00:00:33 1970 +0000
1257 | summary: (33) head
1257 | summary: (33) head
1258 |
1258 |
1259 o changeset: 32:d06dffa21a31
1259 o changeset: 32:d06dffa21a31
1260 | parent: 27:886ed638191b
1260 | parent: 27:886ed638191b
1261 | parent: 31:621d83e11f67
1261 | parent: 31:621d83e11f67
1262 | user: test
1262 | user: test
1263 | date: Thu Jan 01 00:00:32 1970 +0000
1263 | date: Thu Jan 01 00:00:32 1970 +0000
1264 | summary: (32) expand
1264 | summary: (32) expand
1265 |
1265 |
1266 o changeset: 27:886ed638191b
1266 o changeset: 27:886ed638191b
1267 parent: 21:d42a756af44d
1267 parent: 21:d42a756af44d
1268 user: test
1268 user: test
1269 date: Thu Jan 01 00:00:27 1970 +0000
1269 date: Thu Jan 01 00:00:27 1970 +0000
1270 summary: (27) collapse
1270 summary: (27) collapse
1271
1271
1272
1272
1273 File + limit with revs != cset revs:
1273 File + limit with revs != cset revs:
1274 $ cd repo
1274 $ cd repo
1275 $ touch b
1275 $ touch b
1276 $ hg ci -Aqm0
1276 $ hg ci -Aqm0
1277 $ hg glog -l2 a
1277 $ hg glog -l2 a
1278 o changeset: 34:fea3ac5810e0
1278 o changeset: 34:fea3ac5810e0
1279 | parent: 32:d06dffa21a31
1279 | parent: 32:d06dffa21a31
1280 | user: test
1280 | user: test
1281 | date: Thu Jan 01 00:00:34 1970 +0000
1281 | date: Thu Jan 01 00:00:34 1970 +0000
1282 | summary: (34) head
1282 | summary: (34) head
1283 |
1283 |
1284 | o changeset: 33:68608f5145f9
1284 | o changeset: 33:68608f5145f9
1285 | | parent: 18:1aa84d96232a
1285 | | parent: 18:1aa84d96232a
1286 | | user: test
1286 | | user: test
1287 | | date: Thu Jan 01 00:00:33 1970 +0000
1287 | | date: Thu Jan 01 00:00:33 1970 +0000
1288 | | summary: (33) head
1288 | | summary: (33) head
1289 | |
1289 | |
1290
1290
1291 File + limit + -ra:b, (b - a) < limit:
1291 File + limit + -ra:b, (b - a) < limit:
1292 $ hg glog -l3000 -r32:tip a
1292 $ hg glog -l3000 -r32:tip a
1293 o changeset: 34:fea3ac5810e0
1293 o changeset: 34:fea3ac5810e0
1294 | parent: 32:d06dffa21a31
1294 | parent: 32:d06dffa21a31
1295 | user: test
1295 | user: test
1296 | date: Thu Jan 01 00:00:34 1970 +0000
1296 | date: Thu Jan 01 00:00:34 1970 +0000
1297 | summary: (34) head
1297 | summary: (34) head
1298 |
1298 |
1299 | o changeset: 33:68608f5145f9
1299 | o changeset: 33:68608f5145f9
1300 | | parent: 18:1aa84d96232a
1300 | | parent: 18:1aa84d96232a
1301 | | user: test
1301 | | user: test
1302 | | date: Thu Jan 01 00:00:33 1970 +0000
1302 | | date: Thu Jan 01 00:00:33 1970 +0000
1303 | | summary: (33) head
1303 | | summary: (33) head
1304 | |
1304 | |
1305 o | changeset: 32:d06dffa21a31
1305 o | changeset: 32:d06dffa21a31
1306 |\ \ parent: 27:886ed638191b
1306 |\ \ parent: 27:886ed638191b
1307 | | | parent: 31:621d83e11f67
1307 | | | parent: 31:621d83e11f67
1308 | | | user: test
1308 | | | user: test
1309 | | | date: Thu Jan 01 00:00:32 1970 +0000
1309 | | | date: Thu Jan 01 00:00:32 1970 +0000
1310 | | | summary: (32) expand
1310 | | | summary: (32) expand
1311 | | |
1311 | | |
1312
1312
1313 Point out a common and an uncommon unshown parent
1313 Point out a common and an uncommon unshown parent
1314
1314
1315 $ hg glog -r 'rev(8) or rev(9)'
1315 $ hg glog -r 'rev(8) or rev(9)'
1316 o changeset: 9:7010c0af0a35
1316 o changeset: 9:7010c0af0a35
1317 |\ parent: 7:b632bb1b1224
1317 |\ parent: 7:b632bb1b1224
1318 | | parent: 8:7a0b11f71937
1318 | | parent: 8:7a0b11f71937
1319 | | user: test
1319 | | user: test
1320 | | date: Thu Jan 01 00:00:09 1970 +0000
1320 | | date: Thu Jan 01 00:00:09 1970 +0000
1321 | | summary: (9) expand
1321 | | summary: (9) expand
1322 | |
1322 | |
1323 o | changeset: 8:7a0b11f71937
1323 o | changeset: 8:7a0b11f71937
1324 |\| parent: 0:e6eb3150255d
1324 |\| parent: 0:e6eb3150255d
1325 | | parent: 7:b632bb1b1224
1325 | | parent: 7:b632bb1b1224
1326 | | user: test
1326 | | user: test
1327 | | date: Thu Jan 01 00:00:08 1970 +0000
1327 | | date: Thu Jan 01 00:00:08 1970 +0000
1328 | | summary: (8) merge two known; one immediate left, one far right
1328 | | summary: (8) merge two known; one immediate left, one far right
1329 | |
1329 | |
1330
1330
1331 File + limit + -ra:b, b < tip:
1331 File + limit + -ra:b, b < tip:
1332
1332
1333 $ hg glog -l1 -r32:34 a
1333 $ hg glog -l1 -r32:34 a
1334 o changeset: 34:fea3ac5810e0
1334 o changeset: 34:fea3ac5810e0
1335 | parent: 32:d06dffa21a31
1335 | parent: 32:d06dffa21a31
1336 | user: test
1336 | user: test
1337 | date: Thu Jan 01 00:00:34 1970 +0000
1337 | date: Thu Jan 01 00:00:34 1970 +0000
1338 | summary: (34) head
1338 | summary: (34) head
1339 |
1339 |
1340
1340
1341 file(File) + limit + -ra:b, b < tip:
1341 file(File) + limit + -ra:b, b < tip:
1342
1342
1343 $ hg glog -l1 -r32:34 -r 'file("a")'
1343 $ hg glog -l1 -r32:34 -r 'file("a")'
1344 o changeset: 34:fea3ac5810e0
1344 o changeset: 34:fea3ac5810e0
1345 | parent: 32:d06dffa21a31
1345 | parent: 32:d06dffa21a31
1346 | user: test
1346 | user: test
1347 | date: Thu Jan 01 00:00:34 1970 +0000
1347 | date: Thu Jan 01 00:00:34 1970 +0000
1348 | summary: (34) head
1348 | summary: (34) head
1349 |
1349 |
1350
1350
1351 limit(file(File) and a::b), b < tip:
1351 limit(file(File) and a::b), b < tip:
1352
1352
1353 $ hg glog -r 'limit(file("a") and 32::34, 1)'
1353 $ hg glog -r 'limit(file("a") and 32::34, 1)'
1354 o changeset: 32:d06dffa21a31
1354 o changeset: 32:d06dffa21a31
1355 |\ parent: 27:886ed638191b
1355 |\ parent: 27:886ed638191b
1356 | | parent: 31:621d83e11f67
1356 | | parent: 31:621d83e11f67
1357 | | user: test
1357 | | user: test
1358 | | date: Thu Jan 01 00:00:32 1970 +0000
1358 | | date: Thu Jan 01 00:00:32 1970 +0000
1359 | | summary: (32) expand
1359 | | summary: (32) expand
1360 | |
1360 | |
1361
1361
1362 File + limit + -ra:b, b < tip:
1362 File + limit + -ra:b, b < tip:
1363
1363
1364 $ hg glog -r 'limit(file("a") and 34::32, 1)'
1364 $ hg glog -r 'limit(file("a") and 34::32, 1)'
1365
1365
1366 File + limit + -ra:b, b < tip, (b - a) < limit:
1366 File + limit + -ra:b, b < tip, (b - a) < limit:
1367
1367
1368 $ hg glog -l10 -r33:34 a
1368 $ hg glog -l10 -r33:34 a
1369 o changeset: 34:fea3ac5810e0
1369 o changeset: 34:fea3ac5810e0
1370 | parent: 32:d06dffa21a31
1370 | parent: 32:d06dffa21a31
1371 | user: test
1371 | user: test
1372 | date: Thu Jan 01 00:00:34 1970 +0000
1372 | date: Thu Jan 01 00:00:34 1970 +0000
1373 | summary: (34) head
1373 | summary: (34) head
1374 |
1374 |
1375 | o changeset: 33:68608f5145f9
1375 | o changeset: 33:68608f5145f9
1376 | | parent: 18:1aa84d96232a
1376 | | parent: 18:1aa84d96232a
1377 | | user: test
1377 | | user: test
1378 | | date: Thu Jan 01 00:00:33 1970 +0000
1378 | | date: Thu Jan 01 00:00:33 1970 +0000
1379 | | summary: (33) head
1379 | | summary: (33) head
1380 | |
1380 | |
1381
1381
1382 Do not crash or produce strange graphs if history is buggy
1382 Do not crash or produce strange graphs if history is buggy
1383
1383
1384 $ hg branch branch
1384 $ hg branch branch
1385 marked working directory as branch branch
1385 marked working directory as branch branch
1386 (branches are permanent and global, did you want a bookmark?)
1386 (branches are permanent and global, did you want a bookmark?)
1387 $ commit 36 "buggy merge: identical parents" 35 35
1387 $ commit 36 "buggy merge: identical parents" 35 35
1388 $ hg glog -l5
1388 $ hg glog -l5
1389 @ changeset: 36:08a19a744424
1389 @ changeset: 36:08a19a744424
1390 | branch: branch
1390 | branch: branch
1391 | tag: tip
1391 | tag: tip
1392 | parent: 35:9159c3644c5e
1392 | parent: 35:9159c3644c5e
1393 | parent: 35:9159c3644c5e
1393 | parent: 35:9159c3644c5e
1394 | user: test
1394 | user: test
1395 | date: Thu Jan 01 00:00:36 1970 +0000
1395 | date: Thu Jan 01 00:00:36 1970 +0000
1396 | summary: (36) buggy merge: identical parents
1396 | summary: (36) buggy merge: identical parents
1397 |
1397 |
1398 o changeset: 35:9159c3644c5e
1398 o changeset: 35:9159c3644c5e
1399 | user: test
1399 | user: test
1400 | date: Thu Jan 01 00:00:00 1970 +0000
1400 | date: Thu Jan 01 00:00:00 1970 +0000
1401 | summary: 0
1401 | summary: 0
1402 |
1402 |
1403 o changeset: 34:fea3ac5810e0
1403 o changeset: 34:fea3ac5810e0
1404 | parent: 32:d06dffa21a31
1404 | parent: 32:d06dffa21a31
1405 | user: test
1405 | user: test
1406 | date: Thu Jan 01 00:00:34 1970 +0000
1406 | date: Thu Jan 01 00:00:34 1970 +0000
1407 | summary: (34) head
1407 | summary: (34) head
1408 |
1408 |
1409 | o changeset: 33:68608f5145f9
1409 | o changeset: 33:68608f5145f9
1410 | | parent: 18:1aa84d96232a
1410 | | parent: 18:1aa84d96232a
1411 | | user: test
1411 | | user: test
1412 | | date: Thu Jan 01 00:00:33 1970 +0000
1412 | | date: Thu Jan 01 00:00:33 1970 +0000
1413 | | summary: (33) head
1413 | | summary: (33) head
1414 | |
1414 | |
1415 o | changeset: 32:d06dffa21a31
1415 o | changeset: 32:d06dffa21a31
1416 |\ \ parent: 27:886ed638191b
1416 |\ \ parent: 27:886ed638191b
1417 | | | parent: 31:621d83e11f67
1417 | | | parent: 31:621d83e11f67
1418 | | | user: test
1418 | | | user: test
1419 | | | date: Thu Jan 01 00:00:32 1970 +0000
1419 | | | date: Thu Jan 01 00:00:32 1970 +0000
1420 | | | summary: (32) expand
1420 | | | summary: (32) expand
1421 | | |
1421 | | |
1422
1422
1423 Test log -G options
1423 Test log -G options
1424
1424
1425 $ testlog() {
1425 $ testlog() {
1426 > hg log -G --print-revset "$@"
1426 > hg log -G --print-revset "$@"
1427 > hg log --template 'nodetag {rev}\n' "$@" | grep nodetag \
1427 > hg log --template 'nodetag {rev}\n' "$@" | grep nodetag \
1428 > | sed 's/.*nodetag/nodetag/' > log.nodes
1428 > | sed 's/.*nodetag/nodetag/' > log.nodes
1429 > hg log -G --template 'nodetag {rev}\n' "$@" | grep nodetag \
1429 > hg log -G --template 'nodetag {rev}\n' "$@" | grep nodetag \
1430 > | sed 's/.*nodetag/nodetag/' > glog.nodes
1430 > | sed 's/.*nodetag/nodetag/' > glog.nodes
1431 > diff -u log.nodes glog.nodes
1431 > diff -u log.nodes glog.nodes
1432 > }
1432 > }
1433
1433
1434 glog always reorders nodes which explains the difference with log
1434 glog always reorders nodes which explains the difference with log
1435
1435
1436 $ testlog -r 27 -r 25 -r 21 -r 34 -r 32 -r 31
1436 $ testlog -r 27 -r 25 -r 21 -r 34 -r 32 -r 31
1437 ['27', '25', '21', '34', '32', '31']
1437 ['27', '25', '21', '34', '32', '31']
1438 []
1438 []
1439 --- log.nodes * (glob)
1439 --- log.nodes * (glob)
1440 +++ glog.nodes * (glob)
1440 +++ glog.nodes * (glob)
1441 @@ -1,6 +1,6 @@
1441 @@ -1,6 +1,6 @@
1442 -nodetag 27
1442 -nodetag 27
1443 -nodetag 25
1443 -nodetag 25
1444 -nodetag 21
1444 -nodetag 21
1445 nodetag 34
1445 nodetag 34
1446 nodetag 32
1446 nodetag 32
1447 nodetag 31
1447 nodetag 31
1448 +nodetag 27
1448 +nodetag 27
1449 +nodetag 25
1449 +nodetag 25
1450 +nodetag 21
1450 +nodetag 21
1451 [1]
1451 [1]
1452 $ testlog -u test -u not-a-user
1452 $ testlog -u test -u not-a-user
1453 []
1453 []
1454 (group
1454 (group
1455 (group
1455 (group
1456 (or
1456 (or
1457 (func
1457 (func
1458 ('symbol', 'user')
1458 ('symbol', 'user')
1459 ('string', 'test'))
1459 ('string', 'test'))
1460 (func
1460 (func
1461 ('symbol', 'user')
1461 ('symbol', 'user')
1462 ('string', 'not-a-user')))))
1462 ('string', 'not-a-user')))))
1463 $ testlog -b not-a-branch
1463 $ testlog -b not-a-branch
1464 []
1464 abort: unknown revision 'not-a-branch'!
1465 (group
1466 (group
1467 (func
1468 ('symbol', 'branch')
1469 ('string', 'not-a-branch'))))
1470 abort: unknown revision 'not-a-branch'!
1465 abort: unknown revision 'not-a-branch'!
1471 abort: unknown revision 'not-a-branch'!
1466 abort: unknown revision 'not-a-branch'!
1472 $ testlog -b default -b branch --only-branch branch
1467 $ testlog -b default -b branch --only-branch branch
1473 []
1468 []
1474 (group
1469 (group
1475 (group
1470 (group
1476 (or
1471 (or
1477 (or
1472 (or
1478 (func
1473 (func
1479 ('symbol', 'branch')
1474 ('symbol', 'branch')
1480 ('string', 'default'))
1475 ('string', 'default'))
1481 (func
1476 (func
1482 ('symbol', 'branch')
1477 ('symbol', 'branch')
1483 ('string', 'branch')))
1478 ('string', 'branch')))
1484 (func
1479 (func
1485 ('symbol', 'branch')
1480 ('symbol', 'branch')
1486 ('string', 'branch')))))
1481 ('string', 'branch')))))
1487 $ testlog -k expand -k merge
1482 $ testlog -k expand -k merge
1488 []
1483 []
1489 (group
1484 (group
1490 (group
1485 (group
1491 (or
1486 (or
1492 (func
1487 (func
1493 ('symbol', 'keyword')
1488 ('symbol', 'keyword')
1494 ('string', 'expand'))
1489 ('string', 'expand'))
1495 (func
1490 (func
1496 ('symbol', 'keyword')
1491 ('symbol', 'keyword')
1497 ('string', 'merge')))))
1492 ('string', 'merge')))))
1498 $ testlog --only-merges
1493 $ testlog --only-merges
1499 []
1494 []
1500 (group
1495 (group
1501 (func
1496 (func
1502 ('symbol', 'merge')
1497 ('symbol', 'merge')
1503 None))
1498 None))
1504 $ testlog --no-merges
1499 $ testlog --no-merges
1505 []
1500 []
1506 (group
1501 (group
1507 (not
1502 (not
1508 (func
1503 (func
1509 ('symbol', 'merge')
1504 ('symbol', 'merge')
1510 None)))
1505 None)))
1511 $ testlog --date '2 0 to 4 0'
1506 $ testlog --date '2 0 to 4 0'
1512 []
1507 []
1513 (group
1508 (group
1514 (func
1509 (func
1515 ('symbol', 'date')
1510 ('symbol', 'date')
1516 ('string', '2 0 to 4 0')))
1511 ('string', '2 0 to 4 0')))
1517 $ hg log -G -d 'brace ) in a date'
1512 $ hg log -G -d 'brace ) in a date'
1518 abort: invalid date: 'brace ) in a date'
1513 abort: invalid date: 'brace ) in a date'
1519 [255]
1514 [255]
1520 $ testlog --prune 31 --prune 32
1515 $ testlog --prune 31 --prune 32
1521 []
1516 []
1522 (group
1517 (group
1523 (group
1518 (group
1524 (and
1519 (and
1525 (not
1520 (not
1526 (group
1521 (group
1527 (or
1522 (or
1528 ('string', '31')
1523 ('string', '31')
1529 (func
1524 (func
1530 ('symbol', 'ancestors')
1525 ('symbol', 'ancestors')
1531 ('string', '31')))))
1526 ('string', '31')))))
1532 (not
1527 (not
1533 (group
1528 (group
1534 (or
1529 (or
1535 ('string', '32')
1530 ('string', '32')
1536 (func
1531 (func
1537 ('symbol', 'ancestors')
1532 ('symbol', 'ancestors')
1538 ('string', '32'))))))))
1533 ('string', '32'))))))))
1539
1534
1540 Dedicated repo for --follow and paths filtering. The g is crafted to
1535 Dedicated repo for --follow and paths filtering. The g is crafted to
1541 have 2 filelog topological heads in a linear changeset graph.
1536 have 2 filelog topological heads in a linear changeset graph.
1542
1537
1543 $ cd ..
1538 $ cd ..
1544 $ hg init follow
1539 $ hg init follow
1545 $ cd follow
1540 $ cd follow
1546 $ echo a > a
1541 $ echo a > a
1547 $ echo aa > aa
1542 $ echo aa > aa
1548 $ echo f > f
1543 $ echo f > f
1549 $ hg ci -Am "add a"
1544 $ hg ci -Am "add a"
1550 adding a
1545 adding a
1551 adding aa
1546 adding aa
1552 adding f
1547 adding f
1553 $ hg cp a b
1548 $ hg cp a b
1554 $ hg cp f g
1549 $ hg cp f g
1555 $ hg ci -m "copy a b"
1550 $ hg ci -m "copy a b"
1556 $ mkdir dir
1551 $ mkdir dir
1557 $ hg mv b dir
1552 $ hg mv b dir
1558 $ echo g >> g
1553 $ echo g >> g
1559 $ echo f >> f
1554 $ echo f >> f
1560 $ hg ci -m "mv b dir/b"
1555 $ hg ci -m "mv b dir/b"
1561 $ hg mv a b
1556 $ hg mv a b
1562 $ hg cp -f f g
1557 $ hg cp -f f g
1563 $ echo a > d
1558 $ echo a > d
1564 $ hg add d
1559 $ hg add d
1565 $ hg ci -m "mv a b; add d"
1560 $ hg ci -m "mv a b; add d"
1566 $ hg mv dir/b e
1561 $ hg mv dir/b e
1567 $ hg ci -m "mv dir/b e"
1562 $ hg ci -m "mv dir/b e"
1568 $ hg glog --template '({rev}) {desc|firstline}\n'
1563 $ hg glog --template '({rev}) {desc|firstline}\n'
1569 @ (4) mv dir/b e
1564 @ (4) mv dir/b e
1570 |
1565 |
1571 o (3) mv a b; add d
1566 o (3) mv a b; add d
1572 |
1567 |
1573 o (2) mv b dir/b
1568 o (2) mv b dir/b
1574 |
1569 |
1575 o (1) copy a b
1570 o (1) copy a b
1576 |
1571 |
1577 o (0) add a
1572 o (0) add a
1578
1573
1579
1574
1580 $ testlog a
1575 $ testlog a
1581 []
1576 []
1582 (group
1577 (group
1583 (group
1578 (group
1584 (func
1579 (func
1585 ('symbol', 'filelog')
1580 ('symbol', 'filelog')
1586 ('string', 'a'))))
1581 ('string', 'a'))))
1587 $ testlog a b
1582 $ testlog a b
1588 []
1583 []
1589 (group
1584 (group
1590 (group
1585 (group
1591 (or
1586 (or
1592 (func
1587 (func
1593 ('symbol', 'filelog')
1588 ('symbol', 'filelog')
1594 ('string', 'a'))
1589 ('string', 'a'))
1595 (func
1590 (func
1596 ('symbol', 'filelog')
1591 ('symbol', 'filelog')
1597 ('string', 'b')))))
1592 ('string', 'b')))))
1598
1593
1599 Test falling back to slow path for non-existing files
1594 Test falling back to slow path for non-existing files
1600
1595
1601 $ testlog a c
1596 $ testlog a c
1602 []
1597 []
1603 (group
1598 (group
1604 (func
1599 (func
1605 ('symbol', '_matchfiles')
1600 ('symbol', '_matchfiles')
1606 (list
1601 (list
1607 (list
1602 (list
1608 ('string', 'r:')
1603 ('string', 'r:')
1609 ('string', 'p:a'))
1604 ('string', 'p:a'))
1610 ('string', 'p:c'))))
1605 ('string', 'p:c'))))
1611
1606
1612 Test multiple --include/--exclude/paths
1607 Test multiple --include/--exclude/paths
1613
1608
1614 $ testlog --include a --include e --exclude b --exclude e a e
1609 $ testlog --include a --include e --exclude b --exclude e a e
1615 []
1610 []
1616 (group
1611 (group
1617 (func
1612 (func
1618 ('symbol', '_matchfiles')
1613 ('symbol', '_matchfiles')
1619 (list
1614 (list
1620 (list
1615 (list
1621 (list
1616 (list
1622 (list
1617 (list
1623 (list
1618 (list
1624 (list
1619 (list
1625 ('string', 'r:')
1620 ('string', 'r:')
1626 ('string', 'p:a'))
1621 ('string', 'p:a'))
1627 ('string', 'p:e'))
1622 ('string', 'p:e'))
1628 ('string', 'i:a'))
1623 ('string', 'i:a'))
1629 ('string', 'i:e'))
1624 ('string', 'i:e'))
1630 ('string', 'x:b'))
1625 ('string', 'x:b'))
1631 ('string', 'x:e'))))
1626 ('string', 'x:e'))))
1632
1627
1633 Test glob expansion of pats
1628 Test glob expansion of pats
1634
1629
1635 $ expandglobs=`python -c "import mercurial.util; \
1630 $ expandglobs=`python -c "import mercurial.util; \
1636 > print mercurial.util.expandglobs and 'true' or 'false'"`
1631 > print mercurial.util.expandglobs and 'true' or 'false'"`
1637 $ if [ $expandglobs = "true" ]; then
1632 $ if [ $expandglobs = "true" ]; then
1638 > testlog 'a*';
1633 > testlog 'a*';
1639 > else
1634 > else
1640 > testlog a*;
1635 > testlog a*;
1641 > fi;
1636 > fi;
1642 []
1637 []
1643 (group
1638 (group
1644 (group
1639 (group
1645 (func
1640 (func
1646 ('symbol', 'filelog')
1641 ('symbol', 'filelog')
1647 ('string', 'aa'))))
1642 ('string', 'aa'))))
1648
1643
1649 Test --follow on a directory
1644 Test --follow on a directory
1650
1645
1651 $ testlog -f dir
1646 $ testlog -f dir
1652 abort: cannot follow file not in parent revision: "dir"
1647 abort: cannot follow file not in parent revision: "dir"
1653 abort: cannot follow file not in parent revision: "dir"
1648 abort: cannot follow file not in parent revision: "dir"
1654 abort: cannot follow file not in parent revision: "dir"
1649 abort: cannot follow file not in parent revision: "dir"
1655
1650
1656 Test --follow on file not in parent revision
1651 Test --follow on file not in parent revision
1657
1652
1658 $ testlog -f a
1653 $ testlog -f a
1659 abort: cannot follow file not in parent revision: "a"
1654 abort: cannot follow file not in parent revision: "a"
1660 abort: cannot follow file not in parent revision: "a"
1655 abort: cannot follow file not in parent revision: "a"
1661 abort: cannot follow file not in parent revision: "a"
1656 abort: cannot follow file not in parent revision: "a"
1662
1657
1663 Test --follow and patterns
1658 Test --follow and patterns
1664
1659
1665 $ testlog -f 'glob:*'
1660 $ testlog -f 'glob:*'
1666 abort: can only follow copies/renames for explicit filenames
1661 abort: can only follow copies/renames for explicit filenames
1667 abort: can only follow copies/renames for explicit filenames
1662 abort: can only follow copies/renames for explicit filenames
1668 abort: can only follow copies/renames for explicit filenames
1663 abort: can only follow copies/renames for explicit filenames
1669
1664
1670 Test --follow on a single rename
1665 Test --follow on a single rename
1671
1666
1672 $ hg up -q 2
1667 $ hg up -q 2
1673 $ testlog -f a
1668 $ testlog -f a
1674 []
1669 []
1675 (group
1670 (group
1676 (group
1671 (group
1677 (func
1672 (func
1678 ('symbol', 'follow')
1673 ('symbol', 'follow')
1679 ('string', 'a'))))
1674 ('string', 'a'))))
1680
1675
1681 Test --follow and multiple renames
1676 Test --follow and multiple renames
1682
1677
1683 $ hg up -q tip
1678 $ hg up -q tip
1684 $ testlog -f e
1679 $ testlog -f e
1685 []
1680 []
1686 (group
1681 (group
1687 (group
1682 (group
1688 (func
1683 (func
1689 ('symbol', 'follow')
1684 ('symbol', 'follow')
1690 ('string', 'e'))))
1685 ('string', 'e'))))
1691
1686
1692 Test --follow and multiple filelog heads
1687 Test --follow and multiple filelog heads
1693
1688
1694 $ hg up -q 2
1689 $ hg up -q 2
1695 $ testlog -f g
1690 $ testlog -f g
1696 []
1691 []
1697 (group
1692 (group
1698 (group
1693 (group
1699 (func
1694 (func
1700 ('symbol', 'follow')
1695 ('symbol', 'follow')
1701 ('string', 'g'))))
1696 ('string', 'g'))))
1702 $ cat log.nodes
1697 $ cat log.nodes
1703 nodetag 2
1698 nodetag 2
1704 nodetag 1
1699 nodetag 1
1705 nodetag 0
1700 nodetag 0
1706 $ hg up -q tip
1701 $ hg up -q tip
1707 $ testlog -f g
1702 $ testlog -f g
1708 []
1703 []
1709 (group
1704 (group
1710 (group
1705 (group
1711 (func
1706 (func
1712 ('symbol', 'follow')
1707 ('symbol', 'follow')
1713 ('string', 'g'))))
1708 ('string', 'g'))))
1714 $ cat log.nodes
1709 $ cat log.nodes
1715 nodetag 3
1710 nodetag 3
1716 nodetag 2
1711 nodetag 2
1717 nodetag 0
1712 nodetag 0
1718
1713
1719 Test --follow and multiple files
1714 Test --follow and multiple files
1720
1715
1721 $ testlog -f g e
1716 $ testlog -f g e
1722 []
1717 []
1723 (group
1718 (group
1724 (group
1719 (group
1725 (or
1720 (or
1726 (func
1721 (func
1727 ('symbol', 'follow')
1722 ('symbol', 'follow')
1728 ('string', 'g'))
1723 ('string', 'g'))
1729 (func
1724 (func
1730 ('symbol', 'follow')
1725 ('symbol', 'follow')
1731 ('string', 'e')))))
1726 ('string', 'e')))))
1732 $ cat log.nodes
1727 $ cat log.nodes
1733 nodetag 4
1728 nodetag 4
1734 nodetag 3
1729 nodetag 3
1735 nodetag 2
1730 nodetag 2
1736 nodetag 1
1731 nodetag 1
1737 nodetag 0
1732 nodetag 0
1738
1733
1739 Test --follow-first
1734 Test --follow-first
1740
1735
1741 $ hg up -q 3
1736 $ hg up -q 3
1742 $ echo ee > e
1737 $ echo ee > e
1743 $ hg ci -Am "add another e" e
1738 $ hg ci -Am "add another e" e
1744 created new head
1739 created new head
1745 $ hg merge --tool internal:other 4
1740 $ hg merge --tool internal:other 4
1746 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
1741 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
1747 (branch merge, don't forget to commit)
1742 (branch merge, don't forget to commit)
1748 $ echo merge > e
1743 $ echo merge > e
1749 $ hg ci -m "merge 5 and 4"
1744 $ hg ci -m "merge 5 and 4"
1750 $ testlog --follow-first
1745 $ testlog --follow-first
1751 []
1746 []
1752 (group
1747 (group
1753 (func
1748 (func
1754 ('symbol', '_followfirst')
1749 ('symbol', '_followfirst')
1755 None))
1750 None))
1756
1751
1757 Cannot compare with log --follow-first FILE as it never worked
1752 Cannot compare with log --follow-first FILE as it never worked
1758
1753
1759 $ hg log -G --print-revset --follow-first e
1754 $ hg log -G --print-revset --follow-first e
1760 []
1755 []
1761 (group
1756 (group
1762 (group
1757 (group
1763 (func
1758 (func
1764 ('symbol', '_followfirst')
1759 ('symbol', '_followfirst')
1765 ('string', 'e'))))
1760 ('string', 'e'))))
1766 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1761 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1767 @ 6 merge 5 and 4
1762 @ 6 merge 5 and 4
1768 |\
1763 |\
1769 o | 5 add another e
1764 o | 5 add another e
1770 | |
1765 | |
1771
1766
1772 Test --copies
1767 Test --copies
1773
1768
1774 $ hg log -G --copies --template "{rev} {desc|firstline} \
1769 $ hg log -G --copies --template "{rev} {desc|firstline} \
1775 > copies: {file_copies_switch}\n"
1770 > copies: {file_copies_switch}\n"
1776 @ 6 merge 5 and 4 copies:
1771 @ 6 merge 5 and 4 copies:
1777 |\
1772 |\
1778 | o 5 add another e copies:
1773 | o 5 add another e copies:
1779 | |
1774 | |
1780 o | 4 mv dir/b e copies: e (dir/b)
1775 o | 4 mv dir/b e copies: e (dir/b)
1781 |/
1776 |/
1782 o 3 mv a b; add d copies: b (a)g (f)
1777 o 3 mv a b; add d copies: b (a)g (f)
1783 |
1778 |
1784 o 2 mv b dir/b copies: dir/b (b)
1779 o 2 mv b dir/b copies: dir/b (b)
1785 |
1780 |
1786 o 1 copy a b copies: b (a)g (f)
1781 o 1 copy a b copies: b (a)g (f)
1787 |
1782 |
1788 o 0 add a copies:
1783 o 0 add a copies:
1789
1784
1790 Test "set:..." and parent revision
1785 Test "set:..." and parent revision
1791
1786
1792 $ hg up -q 4
1787 $ hg up -q 4
1793 $ testlog "set:copied()"
1788 $ testlog "set:copied()"
1794 []
1789 []
1795 (group
1790 (group
1796 (func
1791 (func
1797 ('symbol', '_matchfiles')
1792 ('symbol', '_matchfiles')
1798 (list
1793 (list
1799 ('string', 'r:')
1794 ('string', 'r:')
1800 ('string', 'p:set:copied()'))))
1795 ('string', 'p:set:copied()'))))
1801 $ testlog --include "set:copied()"
1796 $ testlog --include "set:copied()"
1802 []
1797 []
1803 (group
1798 (group
1804 (func
1799 (func
1805 ('symbol', '_matchfiles')
1800 ('symbol', '_matchfiles')
1806 (list
1801 (list
1807 ('string', 'r:')
1802 ('string', 'r:')
1808 ('string', 'i:set:copied()'))))
1803 ('string', 'i:set:copied()'))))
1809 $ testlog -r "sort(file('set:copied()'), -rev)"
1804 $ testlog -r "sort(file('set:copied()'), -rev)"
1810 ["sort(file('set:copied()'), -rev)"]
1805 ["sort(file('set:copied()'), -rev)"]
1811 []
1806 []
1812
1807
1813 Test --removed
1808 Test --removed
1814
1809
1815 $ testlog --removed
1810 $ testlog --removed
1816 []
1811 []
1817 []
1812 []
1818 $ testlog --removed a
1813 $ testlog --removed a
1819 []
1814 []
1820 (group
1815 (group
1821 (func
1816 (func
1822 ('symbol', '_matchfiles')
1817 ('symbol', '_matchfiles')
1823 (list
1818 (list
1824 ('string', 'r:')
1819 ('string', 'r:')
1825 ('string', 'p:a'))))
1820 ('string', 'p:a'))))
1826 $ testlog --removed --follow a
1821 $ testlog --removed --follow a
1827 abort: can only follow copies/renames for explicit filenames
1822 abort: can only follow copies/renames for explicit filenames
1828 abort: can only follow copies/renames for explicit filenames
1823 abort: can only follow copies/renames for explicit filenames
1829 abort: can only follow copies/renames for explicit filenames
1824 abort: can only follow copies/renames for explicit filenames
1830
1825
1831 Test --patch and --stat with --follow and --follow-first
1826 Test --patch and --stat with --follow and --follow-first
1832
1827
1833 $ hg up -q 3
1828 $ hg up -q 3
1834 $ hg log -G --git --patch b
1829 $ hg log -G --git --patch b
1835 o changeset: 1:216d4c92cf98
1830 o changeset: 1:216d4c92cf98
1836 | user: test
1831 | user: test
1837 | date: Thu Jan 01 00:00:00 1970 +0000
1832 | date: Thu Jan 01 00:00:00 1970 +0000
1838 | summary: copy a b
1833 | summary: copy a b
1839 |
1834 |
1840 | diff --git a/a b/b
1835 | diff --git a/a b/b
1841 | copy from a
1836 | copy from a
1842 | copy to b
1837 | copy to b
1843 |
1838 |
1844
1839
1845 $ hg log -G --git --stat b
1840 $ hg log -G --git --stat b
1846 o changeset: 1:216d4c92cf98
1841 o changeset: 1:216d4c92cf98
1847 | user: test
1842 | user: test
1848 | date: Thu Jan 01 00:00:00 1970 +0000
1843 | date: Thu Jan 01 00:00:00 1970 +0000
1849 | summary: copy a b
1844 | summary: copy a b
1850 |
1845 |
1851 | a | 0
1846 | a | 0
1852 | 1 files changed, 0 insertions(+), 0 deletions(-)
1847 | 1 files changed, 0 insertions(+), 0 deletions(-)
1853 |
1848 |
1854
1849
1855 $ hg log -G --git --patch --follow b
1850 $ hg log -G --git --patch --follow b
1856 o changeset: 1:216d4c92cf98
1851 o changeset: 1:216d4c92cf98
1857 | user: test
1852 | user: test
1858 | date: Thu Jan 01 00:00:00 1970 +0000
1853 | date: Thu Jan 01 00:00:00 1970 +0000
1859 | summary: copy a b
1854 | summary: copy a b
1860 |
1855 |
1861 | diff --git a/a b/b
1856 | diff --git a/a b/b
1862 | copy from a
1857 | copy from a
1863 | copy to b
1858 | copy to b
1864 |
1859 |
1865 o changeset: 0:f8035bb17114
1860 o changeset: 0:f8035bb17114
1866 user: test
1861 user: test
1867 date: Thu Jan 01 00:00:00 1970 +0000
1862 date: Thu Jan 01 00:00:00 1970 +0000
1868 summary: add a
1863 summary: add a
1869
1864
1870 diff --git a/a b/a
1865 diff --git a/a b/a
1871 new file mode 100644
1866 new file mode 100644
1872 --- /dev/null
1867 --- /dev/null
1873 +++ b/a
1868 +++ b/a
1874 @@ -0,0 +1,1 @@
1869 @@ -0,0 +1,1 @@
1875 +a
1870 +a
1876
1871
1877
1872
1878 $ hg log -G --git --stat --follow b
1873 $ hg log -G --git --stat --follow b
1879 o changeset: 1:216d4c92cf98
1874 o changeset: 1:216d4c92cf98
1880 | user: test
1875 | user: test
1881 | date: Thu Jan 01 00:00:00 1970 +0000
1876 | date: Thu Jan 01 00:00:00 1970 +0000
1882 | summary: copy a b
1877 | summary: copy a b
1883 |
1878 |
1884 | a | 0
1879 | a | 0
1885 | 1 files changed, 0 insertions(+), 0 deletions(-)
1880 | 1 files changed, 0 insertions(+), 0 deletions(-)
1886 |
1881 |
1887 o changeset: 0:f8035bb17114
1882 o changeset: 0:f8035bb17114
1888 user: test
1883 user: test
1889 date: Thu Jan 01 00:00:00 1970 +0000
1884 date: Thu Jan 01 00:00:00 1970 +0000
1890 summary: add a
1885 summary: add a
1891
1886
1892 a | 1 +
1887 a | 1 +
1893 1 files changed, 1 insertions(+), 0 deletions(-)
1888 1 files changed, 1 insertions(+), 0 deletions(-)
1894
1889
1895
1890
1896 $ hg up -q 6
1891 $ hg up -q 6
1897 $ hg log -G --git --patch --follow-first e
1892 $ hg log -G --git --patch --follow-first e
1898 @ changeset: 6:fc281d8ff18d
1893 @ changeset: 6:fc281d8ff18d
1899 |\ tag: tip
1894 |\ tag: tip
1900 | | parent: 5:99b31f1c2782
1895 | | parent: 5:99b31f1c2782
1901 | | parent: 4:17d952250a9d
1896 | | parent: 4:17d952250a9d
1902 | | user: test
1897 | | user: test
1903 | | date: Thu Jan 01 00:00:00 1970 +0000
1898 | | date: Thu Jan 01 00:00:00 1970 +0000
1904 | | summary: merge 5 and 4
1899 | | summary: merge 5 and 4
1905 | |
1900 | |
1906 | | diff --git a/e b/e
1901 | | diff --git a/e b/e
1907 | | --- a/e
1902 | | --- a/e
1908 | | +++ b/e
1903 | | +++ b/e
1909 | | @@ -1,1 +1,1 @@
1904 | | @@ -1,1 +1,1 @@
1910 | | -ee
1905 | | -ee
1911 | | +merge
1906 | | +merge
1912 | |
1907 | |
1913 o | changeset: 5:99b31f1c2782
1908 o | changeset: 5:99b31f1c2782
1914 | | parent: 3:5918b8d165d1
1909 | | parent: 3:5918b8d165d1
1915 | | user: test
1910 | | user: test
1916 | | date: Thu Jan 01 00:00:00 1970 +0000
1911 | | date: Thu Jan 01 00:00:00 1970 +0000
1917 | | summary: add another e
1912 | | summary: add another e
1918 | |
1913 | |
1919 | | diff --git a/e b/e
1914 | | diff --git a/e b/e
1920 | | new file mode 100644
1915 | | new file mode 100644
1921 | | --- /dev/null
1916 | | --- /dev/null
1922 | | +++ b/e
1917 | | +++ b/e
1923 | | @@ -0,0 +1,1 @@
1918 | | @@ -0,0 +1,1 @@
1924 | | +ee
1919 | | +ee
1925 | |
1920 | |
1926
1921
1927 Test old-style --rev
1922 Test old-style --rev
1928
1923
1929 $ hg tag 'foo-bar'
1924 $ hg tag 'foo-bar'
1930 $ testlog -r 'foo-bar'
1925 $ testlog -r 'foo-bar'
1931 ['foo-bar']
1926 ['foo-bar']
1932 []
1927 []
General Comments 0
You need to be logged in to leave comments. Login now