##// END OF EJS Templates
graphlog: give meaningful error if more than one file is given
Klaus Koch -
r13631:29c800ee stable
parent child Browse files
Show More
@@ -1,337 +1,341 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 import os
15 import os
16 from mercurial.cmdutil import revrange, show_changeset
16 from mercurial.cmdutil import revrange, show_changeset
17 from mercurial.commands import templateopts
17 from mercurial.commands import templateopts
18 from mercurial.i18n import _
18 from mercurial.i18n import _
19 from mercurial.node import nullrev
19 from mercurial.node import nullrev
20 from mercurial import cmdutil, commands, extensions
20 from mercurial import cmdutil, commands, extensions
21 from mercurial import hg, util, graphmod
21 from mercurial import hg, util, graphmod
22
22
23 ASCIIDATA = 'ASC'
23 ASCIIDATA = 'ASC'
24
24
25 def asciiedges(seen, rev, parents):
25 def asciiedges(seen, rev, parents):
26 """adds edge info to changelog DAG walk suitable for ascii()"""
26 """adds edge info to changelog DAG walk suitable for ascii()"""
27 if rev not in seen:
27 if rev not in seen:
28 seen.append(rev)
28 seen.append(rev)
29 nodeidx = seen.index(rev)
29 nodeidx = seen.index(rev)
30
30
31 knownparents = []
31 knownparents = []
32 newparents = []
32 newparents = []
33 for parent in parents:
33 for parent in parents:
34 if parent in seen:
34 if parent in seen:
35 knownparents.append(parent)
35 knownparents.append(parent)
36 else:
36 else:
37 newparents.append(parent)
37 newparents.append(parent)
38
38
39 ncols = len(seen)
39 ncols = len(seen)
40 seen[nodeidx:nodeidx + 1] = newparents
40 seen[nodeidx:nodeidx + 1] = newparents
41 edges = [(nodeidx, seen.index(p)) for p in knownparents]
41 edges = [(nodeidx, seen.index(p)) for p in knownparents]
42
42
43 if len(newparents) > 0:
43 if len(newparents) > 0:
44 edges.append((nodeidx, nodeidx))
44 edges.append((nodeidx, nodeidx))
45 if len(newparents) > 1:
45 if len(newparents) > 1:
46 edges.append((nodeidx, nodeidx + 1))
46 edges.append((nodeidx, nodeidx + 1))
47
47
48 nmorecols = len(seen) - ncols
48 nmorecols = len(seen) - ncols
49 return nodeidx, edges, ncols, nmorecols
49 return nodeidx, edges, ncols, nmorecols
50
50
51 def fix_long_right_edges(edges):
51 def fix_long_right_edges(edges):
52 for (i, (start, end)) in enumerate(edges):
52 for (i, (start, end)) in enumerate(edges):
53 if end > start:
53 if end > start:
54 edges[i] = (start, end + 1)
54 edges[i] = (start, end + 1)
55
55
56 def get_nodeline_edges_tail(
56 def get_nodeline_edges_tail(
57 node_index, p_node_index, n_columns, n_columns_diff, p_diff, fix_tail):
57 node_index, p_node_index, n_columns, n_columns_diff, p_diff, fix_tail):
58 if fix_tail and n_columns_diff == p_diff and n_columns_diff != 0:
58 if fix_tail and n_columns_diff == p_diff and n_columns_diff != 0:
59 # Still going in the same non-vertical direction.
59 # Still going in the same non-vertical direction.
60 if n_columns_diff == -1:
60 if n_columns_diff == -1:
61 start = max(node_index + 1, p_node_index)
61 start = max(node_index + 1, p_node_index)
62 tail = ["|", " "] * (start - node_index - 1)
62 tail = ["|", " "] * (start - node_index - 1)
63 tail.extend(["/", " "] * (n_columns - start))
63 tail.extend(["/", " "] * (n_columns - start))
64 return tail
64 return tail
65 else:
65 else:
66 return ["\\", " "] * (n_columns - node_index - 1)
66 return ["\\", " "] * (n_columns - node_index - 1)
67 else:
67 else:
68 return ["|", " "] * (n_columns - node_index - 1)
68 return ["|", " "] * (n_columns - node_index - 1)
69
69
70 def draw_edges(edges, nodeline, interline):
70 def draw_edges(edges, nodeline, interline):
71 for (start, end) in edges:
71 for (start, end) in edges:
72 if start == end + 1:
72 if start == end + 1:
73 interline[2 * end + 1] = "/"
73 interline[2 * end + 1] = "/"
74 elif start == end - 1:
74 elif start == end - 1:
75 interline[2 * start + 1] = "\\"
75 interline[2 * start + 1] = "\\"
76 elif start == end:
76 elif start == end:
77 interline[2 * start] = "|"
77 interline[2 * start] = "|"
78 else:
78 else:
79 nodeline[2 * end] = "+"
79 nodeline[2 * end] = "+"
80 if start > end:
80 if start > end:
81 (start, end) = (end, start)
81 (start, end) = (end, start)
82 for i in range(2 * start + 1, 2 * end):
82 for i in range(2 * start + 1, 2 * end):
83 if nodeline[i] != "+":
83 if nodeline[i] != "+":
84 nodeline[i] = "-"
84 nodeline[i] = "-"
85
85
86 def get_padding_line(ni, n_columns, edges):
86 def get_padding_line(ni, n_columns, edges):
87 line = []
87 line = []
88 line.extend(["|", " "] * ni)
88 line.extend(["|", " "] * ni)
89 if (ni, ni - 1) in edges or (ni, ni) in edges:
89 if (ni, ni - 1) in edges or (ni, ni) in edges:
90 # (ni, ni - 1) (ni, ni)
90 # (ni, ni - 1) (ni, ni)
91 # | | | | | | | |
91 # | | | | | | | |
92 # +---o | | o---+
92 # +---o | | o---+
93 # | | c | | c | |
93 # | | c | | c | |
94 # | |/ / | |/ /
94 # | |/ / | |/ /
95 # | | | | | |
95 # | | | | | |
96 c = "|"
96 c = "|"
97 else:
97 else:
98 c = " "
98 c = " "
99 line.extend([c, " "])
99 line.extend([c, " "])
100 line.extend(["|", " "] * (n_columns - ni - 1))
100 line.extend(["|", " "] * (n_columns - ni - 1))
101 return line
101 return line
102
102
103 def asciistate():
103 def asciistate():
104 """returns the initial value for the "state" argument to ascii()"""
104 """returns the initial value for the "state" argument to ascii()"""
105 return [0, 0]
105 return [0, 0]
106
106
107 def ascii(ui, state, type, char, text, coldata):
107 def ascii(ui, state, type, char, text, coldata):
108 """prints an ASCII graph of the DAG
108 """prints an ASCII graph of the DAG
109
109
110 takes the following arguments (one call per node in the graph):
110 takes the following arguments (one call per node in the graph):
111
111
112 - ui to write to
112 - ui to write to
113 - Somewhere to keep the needed state in (init to asciistate())
113 - Somewhere to keep the needed state in (init to asciistate())
114 - Column of the current node in the set of ongoing edges.
114 - Column of the current node in the set of ongoing edges.
115 - Type indicator of node data == ASCIIDATA.
115 - Type indicator of node data == ASCIIDATA.
116 - Payload: (char, lines):
116 - Payload: (char, lines):
117 - Character to use as node's symbol.
117 - Character to use as node's symbol.
118 - List of lines to display as the node's text.
118 - List of lines to display as the node's text.
119 - Edges; a list of (col, next_col) indicating the edges between
119 - Edges; a list of (col, next_col) indicating the edges between
120 the current node and its parents.
120 the current node and its parents.
121 - Number of columns (ongoing edges) in the current revision.
121 - Number of columns (ongoing edges) in the current revision.
122 - The difference between the number of columns (ongoing edges)
122 - The difference between the number of columns (ongoing edges)
123 in the next revision and the number of columns (ongoing edges)
123 in the next revision and the number of columns (ongoing edges)
124 in the current revision. That is: -1 means one column removed;
124 in the current revision. That is: -1 means one column removed;
125 0 means no columns added or removed; 1 means one column added.
125 0 means no columns added or removed; 1 means one column added.
126 """
126 """
127
127
128 idx, edges, ncols, coldiff = coldata
128 idx, edges, ncols, coldiff = coldata
129 assert -2 < coldiff < 2
129 assert -2 < coldiff < 2
130 if coldiff == -1:
130 if coldiff == -1:
131 # Transform
131 # Transform
132 #
132 #
133 # | | | | | |
133 # | | | | | |
134 # o | | into o---+
134 # o | | into o---+
135 # |X / |/ /
135 # |X / |/ /
136 # | | | |
136 # | | | |
137 fix_long_right_edges(edges)
137 fix_long_right_edges(edges)
138
138
139 # add_padding_line says whether to rewrite
139 # add_padding_line says whether to rewrite
140 #
140 #
141 # | | | | | | | |
141 # | | | | | | | |
142 # | o---+ into | o---+
142 # | o---+ into | o---+
143 # | / / | | | # <--- padding line
143 # | / / | | | # <--- padding line
144 # o | | | / /
144 # o | | | / /
145 # o | |
145 # o | |
146 add_padding_line = (len(text) > 2 and coldiff == -1 and
146 add_padding_line = (len(text) > 2 and coldiff == -1 and
147 [x for (x, y) in edges if x + 1 < y])
147 [x for (x, y) in edges if x + 1 < y])
148
148
149 # fix_nodeline_tail says whether to rewrite
149 # fix_nodeline_tail says whether to rewrite
150 #
150 #
151 # | | o | | | | o | |
151 # | | o | | | | o | |
152 # | | |/ / | | |/ /
152 # | | |/ / | | |/ /
153 # | o | | into | o / / # <--- fixed nodeline tail
153 # | o | | into | o / / # <--- fixed nodeline tail
154 # | |/ / | |/ /
154 # | |/ / | |/ /
155 # o | | o | |
155 # o | | o | |
156 fix_nodeline_tail = len(text) <= 2 and not add_padding_line
156 fix_nodeline_tail = len(text) <= 2 and not add_padding_line
157
157
158 # nodeline is the line containing the node character (typically o)
158 # nodeline is the line containing the node character (typically o)
159 nodeline = ["|", " "] * idx
159 nodeline = ["|", " "] * idx
160 nodeline.extend([char, " "])
160 nodeline.extend([char, " "])
161
161
162 nodeline.extend(
162 nodeline.extend(
163 get_nodeline_edges_tail(idx, state[1], ncols, coldiff,
163 get_nodeline_edges_tail(idx, state[1], ncols, coldiff,
164 state[0], fix_nodeline_tail))
164 state[0], fix_nodeline_tail))
165
165
166 # shift_interline is the line containing the non-vertical
166 # shift_interline is the line containing the non-vertical
167 # edges between this entry and the next
167 # edges between this entry and the next
168 shift_interline = ["|", " "] * idx
168 shift_interline = ["|", " "] * idx
169 if coldiff == -1:
169 if coldiff == -1:
170 n_spaces = 1
170 n_spaces = 1
171 edge_ch = "/"
171 edge_ch = "/"
172 elif coldiff == 0:
172 elif coldiff == 0:
173 n_spaces = 2
173 n_spaces = 2
174 edge_ch = "|"
174 edge_ch = "|"
175 else:
175 else:
176 n_spaces = 3
176 n_spaces = 3
177 edge_ch = "\\"
177 edge_ch = "\\"
178 shift_interline.extend(n_spaces * [" "])
178 shift_interline.extend(n_spaces * [" "])
179 shift_interline.extend([edge_ch, " "] * (ncols - idx - 1))
179 shift_interline.extend([edge_ch, " "] * (ncols - idx - 1))
180
180
181 # draw edges from the current node to its parents
181 # draw edges from the current node to its parents
182 draw_edges(edges, nodeline, shift_interline)
182 draw_edges(edges, nodeline, shift_interline)
183
183
184 # lines is the list of all graph lines to print
184 # lines is the list of all graph lines to print
185 lines = [nodeline]
185 lines = [nodeline]
186 if add_padding_line:
186 if add_padding_line:
187 lines.append(get_padding_line(idx, ncols, edges))
187 lines.append(get_padding_line(idx, ncols, edges))
188 lines.append(shift_interline)
188 lines.append(shift_interline)
189
189
190 # make sure that there are as many graph lines as there are
190 # make sure that there are as many graph lines as there are
191 # log strings
191 # log strings
192 while len(text) < len(lines):
192 while len(text) < len(lines):
193 text.append("")
193 text.append("")
194 if len(lines) < len(text):
194 if len(lines) < len(text):
195 extra_interline = ["|", " "] * (ncols + coldiff)
195 extra_interline = ["|", " "] * (ncols + coldiff)
196 while len(lines) < len(text):
196 while len(lines) < len(text):
197 lines.append(extra_interline)
197 lines.append(extra_interline)
198
198
199 # print lines
199 # print lines
200 indentation_level = max(ncols, ncols + coldiff)
200 indentation_level = max(ncols, ncols + coldiff)
201 for (line, logstr) in zip(lines, text):
201 for (line, logstr) in zip(lines, text):
202 ln = "%-*s %s" % (2 * indentation_level, "".join(line), logstr)
202 ln = "%-*s %s" % (2 * indentation_level, "".join(line), logstr)
203 ui.write(ln.rstrip() + '\n')
203 ui.write(ln.rstrip() + '\n')
204
204
205 # ... and start over
205 # ... and start over
206 state[0] = coldiff
206 state[0] = coldiff
207 state[1] = idx
207 state[1] = idx
208
208
209 def get_revs(repo, rev_opt):
209 def get_revs(repo, rev_opt):
210 if rev_opt:
210 if rev_opt:
211 revs = revrange(repo, rev_opt)
211 revs = revrange(repo, rev_opt)
212 if len(revs) == 0:
212 if len(revs) == 0:
213 return (nullrev, nullrev)
213 return (nullrev, nullrev)
214 return (max(revs), min(revs))
214 return (max(revs), min(revs))
215 else:
215 else:
216 return (len(repo) - 1, 0)
216 return (len(repo) - 1, 0)
217
217
218 def check_unsupported_flags(opts):
218 def check_unsupported_flags(opts):
219 for op in ["follow", "follow_first", "date", "copies", "keyword", "remove",
219 for op in ["follow", "follow_first", "date", "copies", "keyword", "remove",
220 "only_merges", "user", "branch", "only_branch", "prune",
220 "only_merges", "user", "branch", "only_branch", "prune",
221 "newest_first", "no_merges", "include", "exclude"]:
221 "newest_first", "no_merges", "include", "exclude"]:
222 if op in opts and opts[op]:
222 if op in opts and opts[op]:
223 raise util.Abort(_("--graph option is incompatible with --%s")
223 raise util.Abort(_("--graph option is incompatible with --%s")
224 % op.replace("_", "-"))
224 % op.replace("_", "-"))
225
225
226 def generate(ui, dag, displayer, showparents, edgefn):
226 def generate(ui, dag, displayer, showparents, edgefn):
227 seen, state = [], asciistate()
227 seen, state = [], asciistate()
228 for rev, type, ctx, parents in dag:
228 for rev, type, ctx, parents in dag:
229 char = ctx.node() in showparents and '@' or 'o'
229 char = ctx.node() in showparents and '@' or 'o'
230 displayer.show(ctx)
230 displayer.show(ctx)
231 lines = displayer.hunk.pop(rev).split('\n')[:-1]
231 lines = displayer.hunk.pop(rev).split('\n')[:-1]
232 displayer.flush(rev)
232 displayer.flush(rev)
233 ascii(ui, state, type, char, lines, edgefn(seen, rev, parents))
233 ascii(ui, state, type, char, lines, edgefn(seen, rev, parents))
234 displayer.close()
234 displayer.close()
235
235
236 def graphlog(ui, repo, path=None, **opts):
236 def graphlog(ui, repo, path=None, **opts):
237 """show revision history alongside an ASCII revision graph
237 """show revision history alongside an ASCII revision graph
238
238
239 Print a revision history alongside a revision graph drawn with
239 Print a revision history alongside a revision graph drawn with
240 ASCII characters.
240 ASCII characters.
241
241
242 Nodes printed as an @ character are parents of the working
242 Nodes printed as an @ character are parents of the working
243 directory.
243 directory.
244 """
244 """
245
245
246 check_unsupported_flags(opts)
246 check_unsupported_flags(opts)
247 limit = cmdutil.loglimit(opts)
247 limit = cmdutil.loglimit(opts)
248 start, stop = get_revs(repo, opts["rev"])
248 start, stop = get_revs(repo, opts["rev"])
249 if start == nullrev:
249 if start == nullrev:
250 return
250 return
251
251
252 if path:
252 if path:
253 path = util.canonpath(repo.root, os.getcwd(), path)
253 path = util.canonpath(repo.root, os.getcwd(), path)
254 if path: # could be reset in canonpath
254 if path: # could be reset in canonpath
255 revdag = graphmod.filerevs(repo, path, start, stop, limit)
255 revdag = graphmod.filerevs(repo, path, start, stop, limit)
256 else:
256 else:
257 if limit is not None:
257 if limit is not None:
258 stop = max(stop, start - limit + 1)
258 stop = max(stop, start - limit + 1)
259 revdag = graphmod.revisions(repo, start, stop)
259 revdag = graphmod.revisions(repo, start, stop)
260
260
261 displayer = show_changeset(ui, repo, opts, buffered=True)
261 displayer = show_changeset(ui, repo, opts, buffered=True)
262 showparents = [ctx.node() for ctx in repo[None].parents()]
262 showparents = [ctx.node() for ctx in repo[None].parents()]
263 generate(ui, revdag, displayer, showparents, asciiedges)
263 generate(ui, revdag, displayer, showparents, asciiedges)
264
264
265 def graphrevs(repo, nodes, opts):
265 def graphrevs(repo, nodes, opts):
266 limit = cmdutil.loglimit(opts)
266 limit = cmdutil.loglimit(opts)
267 nodes.reverse()
267 nodes.reverse()
268 if limit is not None:
268 if limit is not None:
269 nodes = nodes[:limit]
269 nodes = nodes[:limit]
270 return graphmod.nodes(repo, nodes)
270 return graphmod.nodes(repo, nodes)
271
271
272 def goutgoing(ui, repo, dest=None, **opts):
272 def goutgoing(ui, repo, dest=None, **opts):
273 """show the outgoing changesets alongside an ASCII revision graph
273 """show the outgoing changesets alongside an ASCII revision graph
274
274
275 Print the outgoing changesets alongside a revision graph drawn with
275 Print the outgoing changesets alongside a revision graph drawn with
276 ASCII characters.
276 ASCII characters.
277
277
278 Nodes printed as an @ character are parents of the working
278 Nodes printed as an @ character are parents of the working
279 directory.
279 directory.
280 """
280 """
281
281
282 check_unsupported_flags(opts)
282 check_unsupported_flags(opts)
283 o = hg._outgoing(ui, repo, dest, opts)
283 o = hg._outgoing(ui, repo, dest, opts)
284 if o is None:
284 if o is None:
285 return
285 return
286
286
287 revdag = graphrevs(repo, o, opts)
287 revdag = graphrevs(repo, o, opts)
288 displayer = show_changeset(ui, repo, opts, buffered=True)
288 displayer = show_changeset(ui, repo, opts, buffered=True)
289 showparents = [ctx.node() for ctx in repo[None].parents()]
289 showparents = [ctx.node() for ctx in repo[None].parents()]
290 generate(ui, revdag, displayer, showparents, asciiedges)
290 generate(ui, revdag, displayer, showparents, asciiedges)
291
291
292 def gincoming(ui, repo, source="default", **opts):
292 def gincoming(ui, repo, source="default", **opts):
293 """show the incoming changesets alongside an ASCII revision graph
293 """show the incoming changesets alongside an ASCII revision graph
294
294
295 Print the incoming changesets alongside a revision graph drawn with
295 Print the incoming changesets alongside a revision graph drawn with
296 ASCII characters.
296 ASCII characters.
297
297
298 Nodes printed as an @ character are parents of the working
298 Nodes printed as an @ character are parents of the working
299 directory.
299 directory.
300 """
300 """
301 def subreporecurse():
301 def subreporecurse():
302 return 1
302 return 1
303
303
304 check_unsupported_flags(opts)
304 check_unsupported_flags(opts)
305 def display(other, chlist, displayer):
305 def display(other, chlist, displayer):
306 revdag = graphrevs(other, chlist, opts)
306 revdag = graphrevs(other, chlist, opts)
307 showparents = [ctx.node() for ctx in repo[None].parents()]
307 showparents = [ctx.node() for ctx in repo[None].parents()]
308 generate(ui, revdag, displayer, showparents, asciiedges)
308 generate(ui, revdag, displayer, showparents, asciiedges)
309
309
310 hg._incoming(display, subreporecurse, ui, repo, source, opts, buffered=True)
310 hg._incoming(display, subreporecurse, ui, repo, source, opts, buffered=True)
311
311
312 def uisetup(ui):
312 def uisetup(ui):
313 '''Initialize the extension.'''
313 '''Initialize the extension.'''
314 _wrapcmd(ui, 'log', commands.table, graphlog)
314 _wrapcmd(ui, 'log', commands.table, graphlog)
315 _wrapcmd(ui, 'incoming', commands.table, gincoming)
315 _wrapcmd(ui, 'incoming', commands.table, gincoming)
316 _wrapcmd(ui, 'outgoing', commands.table, goutgoing)
316 _wrapcmd(ui, 'outgoing', commands.table, goutgoing)
317
317
318 def _wrapcmd(ui, cmd, table, wrapfn):
318 def _wrapcmd(ui, cmd, table, wrapfn):
319 '''wrap the command'''
319 '''wrap the command'''
320 def graph(orig, *args, **kwargs):
320 def graph(orig, *args, **kwargs):
321 if kwargs['graph']:
321 if kwargs['graph']:
322 return wrapfn(*args, **kwargs)
322 try:
323 return wrapfn(*args, **kwargs)
324 except TypeError, e:
325 if len(args) > wrapfn.func_code.co_argcount:
326 raise util.Abort(_('--graph option allows at most one file'))
323 return orig(*args, **kwargs)
327 return orig(*args, **kwargs)
324 entry = extensions.wrapcommand(table, cmd, graph)
328 entry = extensions.wrapcommand(table, cmd, graph)
325 entry[1].append(('G', 'graph', None, _("show the revision DAG")))
329 entry[1].append(('G', 'graph', None, _("show the revision DAG")))
326
330
327 cmdtable = {
331 cmdtable = {
328 "glog":
332 "glog":
329 (graphlog,
333 (graphlog,
330 [('l', 'limit', '',
334 [('l', 'limit', '',
331 _('limit number of changes displayed'), _('NUM')),
335 _('limit number of changes displayed'), _('NUM')),
332 ('p', 'patch', False, _('show patch')),
336 ('p', 'patch', False, _('show patch')),
333 ('r', 'rev', [],
337 ('r', 'rev', [],
334 _('show the specified revision or range'), _('REV')),
338 _('show the specified revision or range'), _('REV')),
335 ] + templateopts,
339 ] + templateopts,
336 _('hg glog [OPTION]... [FILE]')),
340 _('hg glog [OPTION]... [FILE]')),
337 }
341 }
@@ -1,925 +1,930 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 $ echo "[extensions]" >> $HGRCPATH
86 $ echo "[extensions]" >> $HGRCPATH
87 $ echo "graphlog=" >> $HGRCPATH
87 $ echo "graphlog=" >> $HGRCPATH
88
88
89 $ hg init repo
89 $ hg init repo
90 $ cd repo
90 $ cd repo
91
91
92 Empty repo:
92 Empty repo:
93
93
94 $ hg glog
94 $ hg glog
95
95
96
96
97 Building DAG:
97 Building DAG:
98
98
99 $ commit 0 "root"
99 $ commit 0 "root"
100 $ commit 1 "collapse" 0
100 $ commit 1 "collapse" 0
101 $ commit 2 "collapse" 1
101 $ commit 2 "collapse" 1
102 $ commit 3 "collapse" 2
102 $ commit 3 "collapse" 2
103 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
103 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
104 $ commit 5 "expand" 3 4
104 $ commit 5 "expand" 3 4
105 $ commit 6 "merge two known; one immediate left, one far left" 2 5
105 $ commit 6 "merge two known; one immediate left, one far left" 2 5
106 $ commit 7 "expand" 2 5
106 $ commit 7 "expand" 2 5
107 $ commit 8 "merge two known; one immediate left, one far right" 0 7
107 $ commit 8 "merge two known; one immediate left, one far right" 0 7
108 $ commit 9 "expand" 7 8
108 $ commit 9 "expand" 7 8
109 $ commit 10 "merge two known; one immediate left, one near right" 0 6
109 $ commit 10 "merge two known; one immediate left, one near right" 0 6
110 $ commit 11 "expand" 6 10
110 $ commit 11 "expand" 6 10
111 $ commit 12 "merge two known; one immediate right, one far left" 1 9
111 $ commit 12 "merge two known; one immediate right, one far left" 1 9
112 $ commit 13 "expand" 9 11
112 $ commit 13 "expand" 9 11
113 $ commit 14 "merge two known; one immediate right, one far right" 0 12
113 $ commit 14 "merge two known; one immediate right, one far right" 0 12
114 $ commit 15 "expand" 13 14
114 $ commit 15 "expand" 13 14
115 $ commit 16 "merge two known; one immediate right, one near right" 0 1
115 $ commit 16 "merge two known; one immediate right, one near right" 0 1
116 $ commit 17 "expand" 12 16
116 $ commit 17 "expand" 12 16
117 $ commit 18 "merge two known; two far left" 1 15
117 $ commit 18 "merge two known; two far left" 1 15
118 $ commit 19 "expand" 15 17
118 $ commit 19 "expand" 15 17
119 $ commit 20 "merge two known; two far right" 0 18
119 $ commit 20 "merge two known; two far right" 0 18
120 $ commit 21 "expand" 19 20
120 $ commit 21 "expand" 19 20
121 $ commit 22 "merge two known; one far left, one far right" 18 21
121 $ commit 22 "merge two known; one far left, one far right" 18 21
122 $ commit 23 "merge one known; immediate left" 1 22
122 $ commit 23 "merge one known; immediate left" 1 22
123 $ commit 24 "merge one known; immediate right" 0 23
123 $ commit 24 "merge one known; immediate right" 0 23
124 $ commit 25 "merge one known; far left" 21 24
124 $ commit 25 "merge one known; far left" 21 24
125 $ commit 26 "merge one known; far right" 18 25
125 $ commit 26 "merge one known; far right" 18 25
126 $ commit 27 "collapse" 21
126 $ commit 27 "collapse" 21
127 $ commit 28 "merge zero known" 1 26
127 $ commit 28 "merge zero known" 1 26
128 $ commit 29 "regular commit" 0
128 $ commit 29 "regular commit" 0
129 $ commit 30 "expand" 28 29
129 $ commit 30 "expand" 28 29
130 $ commit 31 "expand" 21 30
130 $ commit 31 "expand" 21 30
131 $ commit 32 "expand" 27 31
131 $ commit 32 "expand" 27 31
132 $ commit 33 "head" 18
132 $ commit 33 "head" 18
133 $ commit 34 "head" 32
133 $ commit 34 "head" 32
134
134
135
135
136 $ hg glog -q
136 $ hg glog -q
137 @ 34:fea3ac5810e0
137 @ 34:fea3ac5810e0
138 |
138 |
139 | o 33:68608f5145f9
139 | o 33:68608f5145f9
140 | |
140 | |
141 o | 32:d06dffa21a31
141 o | 32:d06dffa21a31
142 |\ \
142 |\ \
143 | o \ 31:621d83e11f67
143 | o \ 31:621d83e11f67
144 | |\ \
144 | |\ \
145 | | o \ 30:6e11cd4b648f
145 | | o \ 30:6e11cd4b648f
146 | | |\ \
146 | | |\ \
147 | | | o | 29:cd9bb2be7593
147 | | | o | 29:cd9bb2be7593
148 | | | | |
148 | | | | |
149 | | o | | 28:44ecd0b9ae99
149 | | o | | 28:44ecd0b9ae99
150 | | |\ \ \
150 | | |\ \ \
151 o | | | | | 27:886ed638191b
151 o | | | | | 27:886ed638191b
152 |/ / / / /
152 |/ / / / /
153 | | o---+ 26:7f25b6c2f0b9
153 | | o---+ 26:7f25b6c2f0b9
154 | | | | |
154 | | | | |
155 +---o | | 25:91da8ed57247
155 +---o | | 25:91da8ed57247
156 | | | | |
156 | | | | |
157 | | o | | 24:a9c19a3d96b7
157 | | o | | 24:a9c19a3d96b7
158 | | |\| |
158 | | |\| |
159 | | o | | 23:a01cddf0766d
159 | | o | | 23:a01cddf0766d
160 | |/| | |
160 | |/| | |
161 +---o---+ 22:e0d9cccacb5d
161 +---o---+ 22:e0d9cccacb5d
162 | | / /
162 | | / /
163 o | | | 21:d42a756af44d
163 o | | | 21:d42a756af44d
164 |\ \ \ \
164 |\ \ \ \
165 | o---+-+ 20:d30ed6450e32
165 | o---+-+ 20:d30ed6450e32
166 | / / /
166 | / / /
167 o | | | 19:31ddc2c1573b
167 o | | | 19:31ddc2c1573b
168 |\ \ \ \
168 |\ \ \ \
169 +---+---o 18:1aa84d96232a
169 +---+---o 18:1aa84d96232a
170 | | | |
170 | | | |
171 | o | | 17:44765d7c06e0
171 | o | | 17:44765d7c06e0
172 | |\ \ \
172 | |\ \ \
173 | | o---+ 16:3677d192927d
173 | | o---+ 16:3677d192927d
174 | | |/ /
174 | | |/ /
175 o | | | 15:1dda3f72782d
175 o | | | 15:1dda3f72782d
176 |\ \ \ \
176 |\ \ \ \
177 | o-----+ 14:8eac370358ef
177 | o-----+ 14:8eac370358ef
178 | |/ / /
178 | |/ / /
179 o | | | 13:22d8966a97e3
179 o | | | 13:22d8966a97e3
180 |\ \ \ \
180 |\ \ \ \
181 +---o | | 12:86b91144a6e9
181 +---o | | 12:86b91144a6e9
182 | | |/ /
182 | | |/ /
183 | o | | 11:832d76e6bdf2
183 | o | | 11:832d76e6bdf2
184 | |\ \ \
184 | |\ \ \
185 | | o---+ 10:74c64d036d72
185 | | o---+ 10:74c64d036d72
186 | |/ / /
186 | |/ / /
187 o | | | 9:7010c0af0a35
187 o | | | 9:7010c0af0a35
188 |\ \ \ \
188 |\ \ \ \
189 | o-----+ 8:7a0b11f71937
189 | o-----+ 8:7a0b11f71937
190 |/ / / /
190 |/ / / /
191 o | | | 7:b632bb1b1224
191 o | | | 7:b632bb1b1224
192 |\ \ \ \
192 |\ \ \ \
193 +---o | | 6:b105a072e251
193 +---o | | 6:b105a072e251
194 | |/ / /
194 | |/ / /
195 | o | | 5:4409d547b708
195 | o | | 5:4409d547b708
196 | |\ \ \
196 | |\ \ \
197 | | o | | 4:26a8bac39d9f
197 | | o | | 4:26a8bac39d9f
198 | |/|/ /
198 | |/|/ /
199 | o / / 3:27eef8ed80b4
199 | o / / 3:27eef8ed80b4
200 |/ / /
200 |/ / /
201 o / / 2:3d9a33b8d1e1
201 o / / 2:3d9a33b8d1e1
202 |/ /
202 |/ /
203 o / 1:6db2ef61d156
203 o / 1:6db2ef61d156
204 |/
204 |/
205 o 0:e6eb3150255d
205 o 0:e6eb3150255d
206
206
207
207
208 $ hg glog
208 $ hg glog
209 @ changeset: 34:fea3ac5810e0
209 @ changeset: 34:fea3ac5810e0
210 | tag: tip
210 | tag: tip
211 | parent: 32:d06dffa21a31
211 | parent: 32:d06dffa21a31
212 | user: test
212 | user: test
213 | date: Thu Jan 01 00:00:34 1970 +0000
213 | date: Thu Jan 01 00:00:34 1970 +0000
214 | summary: (34) head
214 | summary: (34) head
215 |
215 |
216 | o changeset: 33:68608f5145f9
216 | o changeset: 33:68608f5145f9
217 | | parent: 18:1aa84d96232a
217 | | parent: 18:1aa84d96232a
218 | | user: test
218 | | user: test
219 | | date: Thu Jan 01 00:00:33 1970 +0000
219 | | date: Thu Jan 01 00:00:33 1970 +0000
220 | | summary: (33) head
220 | | summary: (33) head
221 | |
221 | |
222 o | changeset: 32:d06dffa21a31
222 o | changeset: 32:d06dffa21a31
223 |\ \ parent: 27:886ed638191b
223 |\ \ parent: 27:886ed638191b
224 | | | parent: 31:621d83e11f67
224 | | | parent: 31:621d83e11f67
225 | | | user: test
225 | | | user: test
226 | | | date: Thu Jan 01 00:00:32 1970 +0000
226 | | | date: Thu Jan 01 00:00:32 1970 +0000
227 | | | summary: (32) expand
227 | | | summary: (32) expand
228 | | |
228 | | |
229 | o | changeset: 31:621d83e11f67
229 | o | changeset: 31:621d83e11f67
230 | |\ \ parent: 21:d42a756af44d
230 | |\ \ parent: 21:d42a756af44d
231 | | | | parent: 30:6e11cd4b648f
231 | | | | parent: 30:6e11cd4b648f
232 | | | | user: test
232 | | | | user: test
233 | | | | date: Thu Jan 01 00:00:31 1970 +0000
233 | | | | date: Thu Jan 01 00:00:31 1970 +0000
234 | | | | summary: (31) expand
234 | | | | summary: (31) expand
235 | | | |
235 | | | |
236 | | o | changeset: 30:6e11cd4b648f
236 | | o | changeset: 30:6e11cd4b648f
237 | | |\ \ parent: 28:44ecd0b9ae99
237 | | |\ \ parent: 28:44ecd0b9ae99
238 | | | | | parent: 29:cd9bb2be7593
238 | | | | | parent: 29:cd9bb2be7593
239 | | | | | user: test
239 | | | | | user: test
240 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
240 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
241 | | | | | summary: (30) expand
241 | | | | | summary: (30) expand
242 | | | | |
242 | | | | |
243 | | | o | changeset: 29:cd9bb2be7593
243 | | | o | changeset: 29:cd9bb2be7593
244 | | | | | parent: 0:e6eb3150255d
244 | | | | | parent: 0:e6eb3150255d
245 | | | | | user: test
245 | | | | | user: test
246 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
246 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
247 | | | | | summary: (29) regular commit
247 | | | | | summary: (29) regular commit
248 | | | | |
248 | | | | |
249 | | o | | changeset: 28:44ecd0b9ae99
249 | | o | | changeset: 28:44ecd0b9ae99
250 | | |\ \ \ parent: 1:6db2ef61d156
250 | | |\ \ \ parent: 1:6db2ef61d156
251 | | | | | | parent: 26:7f25b6c2f0b9
251 | | | | | | parent: 26:7f25b6c2f0b9
252 | | | | | | user: test
252 | | | | | | user: test
253 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
253 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
254 | | | | | | summary: (28) merge zero known
254 | | | | | | summary: (28) merge zero known
255 | | | | | |
255 | | | | | |
256 o | | | | | changeset: 27:886ed638191b
256 o | | | | | changeset: 27:886ed638191b
257 |/ / / / / parent: 21:d42a756af44d
257 |/ / / / / parent: 21:d42a756af44d
258 | | | | | user: test
258 | | | | | user: test
259 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
259 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
260 | | | | | summary: (27) collapse
260 | | | | | summary: (27) collapse
261 | | | | |
261 | | | | |
262 | | o---+ changeset: 26:7f25b6c2f0b9
262 | | o---+ changeset: 26:7f25b6c2f0b9
263 | | | | | parent: 18:1aa84d96232a
263 | | | | | parent: 18:1aa84d96232a
264 | | | | | parent: 25:91da8ed57247
264 | | | | | parent: 25:91da8ed57247
265 | | | | | user: test
265 | | | | | user: test
266 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
266 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
267 | | | | | summary: (26) merge one known; far right
267 | | | | | summary: (26) merge one known; far right
268 | | | | |
268 | | | | |
269 +---o | | changeset: 25:91da8ed57247
269 +---o | | changeset: 25:91da8ed57247
270 | | | | | parent: 21:d42a756af44d
270 | | | | | parent: 21:d42a756af44d
271 | | | | | parent: 24:a9c19a3d96b7
271 | | | | | parent: 24:a9c19a3d96b7
272 | | | | | user: test
272 | | | | | user: test
273 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
273 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
274 | | | | | summary: (25) merge one known; far left
274 | | | | | summary: (25) merge one known; far left
275 | | | | |
275 | | | | |
276 | | o | | changeset: 24:a9c19a3d96b7
276 | | o | | changeset: 24:a9c19a3d96b7
277 | | |\| | parent: 0:e6eb3150255d
277 | | |\| | parent: 0:e6eb3150255d
278 | | | | | parent: 23:a01cddf0766d
278 | | | | | parent: 23:a01cddf0766d
279 | | | | | user: test
279 | | | | | user: test
280 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
280 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
281 | | | | | summary: (24) merge one known; immediate right
281 | | | | | summary: (24) merge one known; immediate right
282 | | | | |
282 | | | | |
283 | | o | | changeset: 23:a01cddf0766d
283 | | o | | changeset: 23:a01cddf0766d
284 | |/| | | parent: 1:6db2ef61d156
284 | |/| | | parent: 1:6db2ef61d156
285 | | | | | parent: 22:e0d9cccacb5d
285 | | | | | parent: 22:e0d9cccacb5d
286 | | | | | user: test
286 | | | | | user: test
287 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
287 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
288 | | | | | summary: (23) merge one known; immediate left
288 | | | | | summary: (23) merge one known; immediate left
289 | | | | |
289 | | | | |
290 +---o---+ changeset: 22:e0d9cccacb5d
290 +---o---+ changeset: 22:e0d9cccacb5d
291 | | | | parent: 18:1aa84d96232a
291 | | | | parent: 18:1aa84d96232a
292 | | / / parent: 21:d42a756af44d
292 | | / / parent: 21:d42a756af44d
293 | | | | user: test
293 | | | | user: test
294 | | | | date: Thu Jan 01 00:00:22 1970 +0000
294 | | | | date: Thu Jan 01 00:00:22 1970 +0000
295 | | | | summary: (22) merge two known; one far left, one far right
295 | | | | summary: (22) merge two known; one far left, one far right
296 | | | |
296 | | | |
297 o | | | changeset: 21:d42a756af44d
297 o | | | changeset: 21:d42a756af44d
298 |\ \ \ \ parent: 19:31ddc2c1573b
298 |\ \ \ \ parent: 19:31ddc2c1573b
299 | | | | | parent: 20:d30ed6450e32
299 | | | | | parent: 20:d30ed6450e32
300 | | | | | user: test
300 | | | | | user: test
301 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
301 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
302 | | | | | summary: (21) expand
302 | | | | | summary: (21) expand
303 | | | | |
303 | | | | |
304 | o---+-+ changeset: 20:d30ed6450e32
304 | o---+-+ changeset: 20:d30ed6450e32
305 | | | | parent: 0:e6eb3150255d
305 | | | | parent: 0:e6eb3150255d
306 | / / / parent: 18:1aa84d96232a
306 | / / / parent: 18:1aa84d96232a
307 | | | | user: test
307 | | | | user: test
308 | | | | date: Thu Jan 01 00:00:20 1970 +0000
308 | | | | date: Thu Jan 01 00:00:20 1970 +0000
309 | | | | summary: (20) merge two known; two far right
309 | | | | summary: (20) merge two known; two far right
310 | | | |
310 | | | |
311 o | | | changeset: 19:31ddc2c1573b
311 o | | | changeset: 19:31ddc2c1573b
312 |\ \ \ \ parent: 15:1dda3f72782d
312 |\ \ \ \ parent: 15:1dda3f72782d
313 | | | | | parent: 17:44765d7c06e0
313 | | | | | parent: 17:44765d7c06e0
314 | | | | | user: test
314 | | | | | user: test
315 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
315 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
316 | | | | | summary: (19) expand
316 | | | | | summary: (19) expand
317 | | | | |
317 | | | | |
318 +---+---o changeset: 18:1aa84d96232a
318 +---+---o changeset: 18:1aa84d96232a
319 | | | | parent: 1:6db2ef61d156
319 | | | | parent: 1:6db2ef61d156
320 | | | | parent: 15:1dda3f72782d
320 | | | | parent: 15:1dda3f72782d
321 | | | | user: test
321 | | | | user: test
322 | | | | date: Thu Jan 01 00:00:18 1970 +0000
322 | | | | date: Thu Jan 01 00:00:18 1970 +0000
323 | | | | summary: (18) merge two known; two far left
323 | | | | summary: (18) merge two known; two far left
324 | | | |
324 | | | |
325 | o | | changeset: 17:44765d7c06e0
325 | o | | changeset: 17:44765d7c06e0
326 | |\ \ \ parent: 12:86b91144a6e9
326 | |\ \ \ parent: 12:86b91144a6e9
327 | | | | | parent: 16:3677d192927d
327 | | | | | parent: 16:3677d192927d
328 | | | | | user: test
328 | | | | | user: test
329 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
329 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
330 | | | | | summary: (17) expand
330 | | | | | summary: (17) expand
331 | | | | |
331 | | | | |
332 | | o---+ changeset: 16:3677d192927d
332 | | o---+ changeset: 16:3677d192927d
333 | | | | | parent: 0:e6eb3150255d
333 | | | | | parent: 0:e6eb3150255d
334 | | |/ / parent: 1:6db2ef61d156
334 | | |/ / parent: 1:6db2ef61d156
335 | | | | user: test
335 | | | | user: test
336 | | | | date: Thu Jan 01 00:00:16 1970 +0000
336 | | | | date: Thu Jan 01 00:00:16 1970 +0000
337 | | | | summary: (16) merge two known; one immediate right, one near right
337 | | | | summary: (16) merge two known; one immediate right, one near right
338 | | | |
338 | | | |
339 o | | | changeset: 15:1dda3f72782d
339 o | | | changeset: 15:1dda3f72782d
340 |\ \ \ \ parent: 13:22d8966a97e3
340 |\ \ \ \ parent: 13:22d8966a97e3
341 | | | | | parent: 14:8eac370358ef
341 | | | | | parent: 14:8eac370358ef
342 | | | | | user: test
342 | | | | | user: test
343 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
343 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
344 | | | | | summary: (15) expand
344 | | | | | summary: (15) expand
345 | | | | |
345 | | | | |
346 | o-----+ changeset: 14:8eac370358ef
346 | o-----+ changeset: 14:8eac370358ef
347 | | | | | parent: 0:e6eb3150255d
347 | | | | | parent: 0:e6eb3150255d
348 | |/ / / parent: 12:86b91144a6e9
348 | |/ / / parent: 12:86b91144a6e9
349 | | | | user: test
349 | | | | user: test
350 | | | | date: Thu Jan 01 00:00:14 1970 +0000
350 | | | | date: Thu Jan 01 00:00:14 1970 +0000
351 | | | | summary: (14) merge two known; one immediate right, one far right
351 | | | | summary: (14) merge two known; one immediate right, one far right
352 | | | |
352 | | | |
353 o | | | changeset: 13:22d8966a97e3
353 o | | | changeset: 13:22d8966a97e3
354 |\ \ \ \ parent: 9:7010c0af0a35
354 |\ \ \ \ parent: 9:7010c0af0a35
355 | | | | | parent: 11:832d76e6bdf2
355 | | | | | parent: 11:832d76e6bdf2
356 | | | | | user: test
356 | | | | | user: test
357 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
357 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
358 | | | | | summary: (13) expand
358 | | | | | summary: (13) expand
359 | | | | |
359 | | | | |
360 +---o | | changeset: 12:86b91144a6e9
360 +---o | | changeset: 12:86b91144a6e9
361 | | |/ / parent: 1:6db2ef61d156
361 | | |/ / parent: 1:6db2ef61d156
362 | | | | parent: 9:7010c0af0a35
362 | | | | parent: 9:7010c0af0a35
363 | | | | user: test
363 | | | | user: test
364 | | | | date: Thu Jan 01 00:00:12 1970 +0000
364 | | | | date: Thu Jan 01 00:00:12 1970 +0000
365 | | | | summary: (12) merge two known; one immediate right, one far left
365 | | | | summary: (12) merge two known; one immediate right, one far left
366 | | | |
366 | | | |
367 | o | | changeset: 11:832d76e6bdf2
367 | o | | changeset: 11:832d76e6bdf2
368 | |\ \ \ parent: 6:b105a072e251
368 | |\ \ \ parent: 6:b105a072e251
369 | | | | | parent: 10:74c64d036d72
369 | | | | | parent: 10:74c64d036d72
370 | | | | | user: test
370 | | | | | user: test
371 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
371 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
372 | | | | | summary: (11) expand
372 | | | | | summary: (11) expand
373 | | | | |
373 | | | | |
374 | | o---+ changeset: 10:74c64d036d72
374 | | o---+ changeset: 10:74c64d036d72
375 | | | | | parent: 0:e6eb3150255d
375 | | | | | parent: 0:e6eb3150255d
376 | |/ / / parent: 6:b105a072e251
376 | |/ / / parent: 6:b105a072e251
377 | | | | user: test
377 | | | | user: test
378 | | | | date: Thu Jan 01 00:00:10 1970 +0000
378 | | | | date: Thu Jan 01 00:00:10 1970 +0000
379 | | | | summary: (10) merge two known; one immediate left, one near right
379 | | | | summary: (10) merge two known; one immediate left, one near right
380 | | | |
380 | | | |
381 o | | | changeset: 9:7010c0af0a35
381 o | | | changeset: 9:7010c0af0a35
382 |\ \ \ \ parent: 7:b632bb1b1224
382 |\ \ \ \ parent: 7:b632bb1b1224
383 | | | | | parent: 8:7a0b11f71937
383 | | | | | parent: 8:7a0b11f71937
384 | | | | | user: test
384 | | | | | user: test
385 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
385 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
386 | | | | | summary: (9) expand
386 | | | | | summary: (9) expand
387 | | | | |
387 | | | | |
388 | o-----+ changeset: 8:7a0b11f71937
388 | o-----+ changeset: 8:7a0b11f71937
389 | | | | | parent: 0:e6eb3150255d
389 | | | | | parent: 0:e6eb3150255d
390 |/ / / / parent: 7:b632bb1b1224
390 |/ / / / parent: 7:b632bb1b1224
391 | | | | user: test
391 | | | | user: test
392 | | | | date: Thu Jan 01 00:00:08 1970 +0000
392 | | | | date: Thu Jan 01 00:00:08 1970 +0000
393 | | | | summary: (8) merge two known; one immediate left, one far right
393 | | | | summary: (8) merge two known; one immediate left, one far right
394 | | | |
394 | | | |
395 o | | | changeset: 7:b632bb1b1224
395 o | | | changeset: 7:b632bb1b1224
396 |\ \ \ \ parent: 2:3d9a33b8d1e1
396 |\ \ \ \ parent: 2:3d9a33b8d1e1
397 | | | | | parent: 5:4409d547b708
397 | | | | | parent: 5:4409d547b708
398 | | | | | user: test
398 | | | | | user: test
399 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
399 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
400 | | | | | summary: (7) expand
400 | | | | | summary: (7) expand
401 | | | | |
401 | | | | |
402 +---o | | changeset: 6:b105a072e251
402 +---o | | changeset: 6:b105a072e251
403 | |/ / / parent: 2:3d9a33b8d1e1
403 | |/ / / parent: 2:3d9a33b8d1e1
404 | | | | parent: 5:4409d547b708
404 | | | | parent: 5:4409d547b708
405 | | | | user: test
405 | | | | user: test
406 | | | | date: Thu Jan 01 00:00:06 1970 +0000
406 | | | | date: Thu Jan 01 00:00:06 1970 +0000
407 | | | | summary: (6) merge two known; one immediate left, one far left
407 | | | | summary: (6) merge two known; one immediate left, one far left
408 | | | |
408 | | | |
409 | o | | changeset: 5:4409d547b708
409 | o | | changeset: 5:4409d547b708
410 | |\ \ \ parent: 3:27eef8ed80b4
410 | |\ \ \ parent: 3:27eef8ed80b4
411 | | | | | parent: 4:26a8bac39d9f
411 | | | | | parent: 4:26a8bac39d9f
412 | | | | | user: test
412 | | | | | user: test
413 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
413 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
414 | | | | | summary: (5) expand
414 | | | | | summary: (5) expand
415 | | | | |
415 | | | | |
416 | | o | | changeset: 4:26a8bac39d9f
416 | | o | | changeset: 4:26a8bac39d9f
417 | |/|/ / parent: 1:6db2ef61d156
417 | |/|/ / parent: 1:6db2ef61d156
418 | | | | parent: 3:27eef8ed80b4
418 | | | | parent: 3:27eef8ed80b4
419 | | | | user: test
419 | | | | user: test
420 | | | | date: Thu Jan 01 00:00:04 1970 +0000
420 | | | | date: Thu Jan 01 00:00:04 1970 +0000
421 | | | | summary: (4) merge two known; one immediate left, one immediate right
421 | | | | summary: (4) merge two known; one immediate left, one immediate right
422 | | | |
422 | | | |
423 | o | | changeset: 3:27eef8ed80b4
423 | o | | changeset: 3:27eef8ed80b4
424 |/ / / user: test
424 |/ / / user: test
425 | | | date: Thu Jan 01 00:00:03 1970 +0000
425 | | | date: Thu Jan 01 00:00:03 1970 +0000
426 | | | summary: (3) collapse
426 | | | summary: (3) collapse
427 | | |
427 | | |
428 o | | changeset: 2:3d9a33b8d1e1
428 o | | changeset: 2:3d9a33b8d1e1
429 |/ / user: test
429 |/ / user: test
430 | | date: Thu Jan 01 00:00:02 1970 +0000
430 | | date: Thu Jan 01 00:00:02 1970 +0000
431 | | summary: (2) collapse
431 | | summary: (2) collapse
432 | |
432 | |
433 o | changeset: 1:6db2ef61d156
433 o | changeset: 1:6db2ef61d156
434 |/ user: test
434 |/ user: test
435 | date: Thu Jan 01 00:00:01 1970 +0000
435 | date: Thu Jan 01 00:00:01 1970 +0000
436 | summary: (1) collapse
436 | summary: (1) collapse
437 |
437 |
438 o changeset: 0:e6eb3150255d
438 o changeset: 0:e6eb3150255d
439 user: test
439 user: test
440 date: Thu Jan 01 00:00:00 1970 +0000
440 date: Thu Jan 01 00:00:00 1970 +0000
441 summary: (0) root
441 summary: (0) root
442
442
443
443
444 File glog:
444 File glog:
445 $ hg glog a
445 $ hg glog a
446 @ changeset: 34:fea3ac5810e0
446 @ changeset: 34:fea3ac5810e0
447 | tag: tip
447 | tag: tip
448 | parent: 32:d06dffa21a31
448 | parent: 32:d06dffa21a31
449 | user: test
449 | user: test
450 | date: Thu Jan 01 00:00:34 1970 +0000
450 | date: Thu Jan 01 00:00:34 1970 +0000
451 | summary: (34) head
451 | summary: (34) head
452 |
452 |
453 | o changeset: 33:68608f5145f9
453 | o changeset: 33:68608f5145f9
454 | | parent: 18:1aa84d96232a
454 | | parent: 18:1aa84d96232a
455 | | user: test
455 | | user: test
456 | | date: Thu Jan 01 00:00:33 1970 +0000
456 | | date: Thu Jan 01 00:00:33 1970 +0000
457 | | summary: (33) head
457 | | summary: (33) head
458 | |
458 | |
459 o | changeset: 32:d06dffa21a31
459 o | changeset: 32:d06dffa21a31
460 |\ \ parent: 27:886ed638191b
460 |\ \ parent: 27:886ed638191b
461 | | | parent: 31:621d83e11f67
461 | | | parent: 31:621d83e11f67
462 | | | user: test
462 | | | user: test
463 | | | date: Thu Jan 01 00:00:32 1970 +0000
463 | | | date: Thu Jan 01 00:00:32 1970 +0000
464 | | | summary: (32) expand
464 | | | summary: (32) expand
465 | | |
465 | | |
466 | o | changeset: 31:621d83e11f67
466 | o | changeset: 31:621d83e11f67
467 | | | parent: 21:d42a756af44d
467 | | | parent: 21:d42a756af44d
468 | | | parent: 30:6e11cd4b648f
468 | | | parent: 30:6e11cd4b648f
469 | | | user: test
469 | | | user: test
470 | | | date: Thu Jan 01 00:00:31 1970 +0000
470 | | | date: Thu Jan 01 00:00:31 1970 +0000
471 | | | summary: (31) expand
471 | | | summary: (31) expand
472 | | |
472 | | |
473 | o | changeset: 30:6e11cd4b648f
473 | o | changeset: 30:6e11cd4b648f
474 | |\ \ parent: 28:44ecd0b9ae99
474 | |\ \ parent: 28:44ecd0b9ae99
475 | | | | parent: 29:cd9bb2be7593
475 | | | | parent: 29:cd9bb2be7593
476 | | | | user: test
476 | | | | user: test
477 | | | | date: Thu Jan 01 00:00:30 1970 +0000
477 | | | | date: Thu Jan 01 00:00:30 1970 +0000
478 | | | | summary: (30) expand
478 | | | | summary: (30) expand
479 | | | |
479 | | | |
480 | | o | changeset: 29:cd9bb2be7593
480 | | o | changeset: 29:cd9bb2be7593
481 | | | | parent: 0:e6eb3150255d
481 | | | | parent: 0:e6eb3150255d
482 | | | | user: test
482 | | | | user: test
483 | | | | date: Thu Jan 01 00:00:29 1970 +0000
483 | | | | date: Thu Jan 01 00:00:29 1970 +0000
484 | | | | summary: (29) regular commit
484 | | | | summary: (29) regular commit
485 | | | |
485 | | | |
486 | o | | changeset: 28:44ecd0b9ae99
486 | o | | changeset: 28:44ecd0b9ae99
487 | | | | parent: 1:6db2ef61d156
487 | | | | parent: 1:6db2ef61d156
488 | | | | parent: 26:7f25b6c2f0b9
488 | | | | parent: 26:7f25b6c2f0b9
489 | | | | user: test
489 | | | | user: test
490 | | | | date: Thu Jan 01 00:00:28 1970 +0000
490 | | | | date: Thu Jan 01 00:00:28 1970 +0000
491 | | | | summary: (28) merge zero known
491 | | | | summary: (28) merge zero known
492 | | | |
492 | | | |
493 o | | | changeset: 27:886ed638191b
493 o | | | changeset: 27:886ed638191b
494 | | | | parent: 21:d42a756af44d
494 | | | | parent: 21:d42a756af44d
495 | | | | user: test
495 | | | | user: test
496 | | | | date: Thu Jan 01 00:00:27 1970 +0000
496 | | | | date: Thu Jan 01 00:00:27 1970 +0000
497 | | | | summary: (27) collapse
497 | | | | summary: (27) collapse
498 | | | |
498 | | | |
499 | o | | changeset: 26:7f25b6c2f0b9
499 | o | | changeset: 26:7f25b6c2f0b9
500 | | | | parent: 18:1aa84d96232a
500 | | | | parent: 18:1aa84d96232a
501 | | | | parent: 25:91da8ed57247
501 | | | | parent: 25:91da8ed57247
502 | | | | user: test
502 | | | | user: test
503 | | | | date: Thu Jan 01 00:00:26 1970 +0000
503 | | | | date: Thu Jan 01 00:00:26 1970 +0000
504 | | | | summary: (26) merge one known; far right
504 | | | | summary: (26) merge one known; far right
505 | | | |
505 | | | |
506 | o | | changeset: 25:91da8ed57247
506 | o | | changeset: 25:91da8ed57247
507 | | | | parent: 21:d42a756af44d
507 | | | | parent: 21:d42a756af44d
508 | | | | parent: 24:a9c19a3d96b7
508 | | | | parent: 24:a9c19a3d96b7
509 | | | | user: test
509 | | | | user: test
510 | | | | date: Thu Jan 01 00:00:25 1970 +0000
510 | | | | date: Thu Jan 01 00:00:25 1970 +0000
511 | | | | summary: (25) merge one known; far left
511 | | | | summary: (25) merge one known; far left
512 | | | |
512 | | | |
513 | o | | changeset: 24:a9c19a3d96b7
513 | o | | changeset: 24:a9c19a3d96b7
514 | | | | parent: 0:e6eb3150255d
514 | | | | parent: 0:e6eb3150255d
515 | | | | parent: 23:a01cddf0766d
515 | | | | parent: 23:a01cddf0766d
516 | | | | user: test
516 | | | | user: test
517 | | | | date: Thu Jan 01 00:00:24 1970 +0000
517 | | | | date: Thu Jan 01 00:00:24 1970 +0000
518 | | | | summary: (24) merge one known; immediate right
518 | | | | summary: (24) merge one known; immediate right
519 | | | |
519 | | | |
520 | o | | changeset: 23:a01cddf0766d
520 | o | | changeset: 23:a01cddf0766d
521 | | | | parent: 1:6db2ef61d156
521 | | | | parent: 1:6db2ef61d156
522 | | | | parent: 22:e0d9cccacb5d
522 | | | | parent: 22:e0d9cccacb5d
523 | | | | user: test
523 | | | | user: test
524 | | | | date: Thu Jan 01 00:00:23 1970 +0000
524 | | | | date: Thu Jan 01 00:00:23 1970 +0000
525 | | | | summary: (23) merge one known; immediate left
525 | | | | summary: (23) merge one known; immediate left
526 | | | |
526 | | | |
527 | o | | changeset: 22:e0d9cccacb5d
527 | o | | changeset: 22:e0d9cccacb5d
528 |/ / / parent: 18:1aa84d96232a
528 |/ / / parent: 18:1aa84d96232a
529 | | | parent: 21:d42a756af44d
529 | | | parent: 21:d42a756af44d
530 | | | user: test
530 | | | user: test
531 | | | date: Thu Jan 01 00:00:22 1970 +0000
531 | | | date: Thu Jan 01 00:00:22 1970 +0000
532 | | | summary: (22) merge two known; one far left, one far right
532 | | | summary: (22) merge two known; one far left, one far right
533 | | |
533 | | |
534 o | | changeset: 21:d42a756af44d
534 o | | changeset: 21:d42a756af44d
535 |\ \ \ parent: 19:31ddc2c1573b
535 |\ \ \ parent: 19:31ddc2c1573b
536 | | | | parent: 20:d30ed6450e32
536 | | | | parent: 20:d30ed6450e32
537 | | | | user: test
537 | | | | user: test
538 | | | | date: Thu Jan 01 00:00:21 1970 +0000
538 | | | | date: Thu Jan 01 00:00:21 1970 +0000
539 | | | | summary: (21) expand
539 | | | | summary: (21) expand
540 | | | |
540 | | | |
541 | o---+ changeset: 20:d30ed6450e32
541 | o---+ changeset: 20:d30ed6450e32
542 | | | parent: 0:e6eb3150255d
542 | | | parent: 0:e6eb3150255d
543 | / / parent: 18:1aa84d96232a
543 | / / parent: 18:1aa84d96232a
544 | | | user: test
544 | | | user: test
545 | | | date: Thu Jan 01 00:00:20 1970 +0000
545 | | | date: Thu Jan 01 00:00:20 1970 +0000
546 | | | summary: (20) merge two known; two far right
546 | | | summary: (20) merge two known; two far right
547 | | |
547 | | |
548 o | | changeset: 19:31ddc2c1573b
548 o | | changeset: 19:31ddc2c1573b
549 |\ \ \ parent: 15:1dda3f72782d
549 |\ \ \ parent: 15:1dda3f72782d
550 | | | | parent: 17:44765d7c06e0
550 | | | | parent: 17:44765d7c06e0
551 | | | | user: test
551 | | | | user: test
552 | | | | date: Thu Jan 01 00:00:19 1970 +0000
552 | | | | date: Thu Jan 01 00:00:19 1970 +0000
553 | | | | summary: (19) expand
553 | | | | summary: (19) expand
554 | | | |
554 | | | |
555 +-----o changeset: 18:1aa84d96232a
555 +-----o changeset: 18:1aa84d96232a
556 | | | parent: 1:6db2ef61d156
556 | | | parent: 1:6db2ef61d156
557 | | | parent: 15:1dda3f72782d
557 | | | parent: 15:1dda3f72782d
558 | | | user: test
558 | | | user: test
559 | | | date: Thu Jan 01 00:00:18 1970 +0000
559 | | | date: Thu Jan 01 00:00:18 1970 +0000
560 | | | summary: (18) merge two known; two far left
560 | | | summary: (18) merge two known; two far left
561 | | |
561 | | |
562 | o | changeset: 17:44765d7c06e0
562 | o | changeset: 17:44765d7c06e0
563 | |\ \ parent: 12:86b91144a6e9
563 | |\ \ parent: 12:86b91144a6e9
564 | | | | parent: 16:3677d192927d
564 | | | | parent: 16:3677d192927d
565 | | | | user: test
565 | | | | user: test
566 | | | | date: Thu Jan 01 00:00:17 1970 +0000
566 | | | | date: Thu Jan 01 00:00:17 1970 +0000
567 | | | | summary: (17) expand
567 | | | | summary: (17) expand
568 | | | |
568 | | | |
569 | | o | changeset: 16:3677d192927d
569 | | o | changeset: 16:3677d192927d
570 | | | | parent: 0:e6eb3150255d
570 | | | | parent: 0:e6eb3150255d
571 | | | | parent: 1:6db2ef61d156
571 | | | | parent: 1:6db2ef61d156
572 | | | | user: test
572 | | | | user: test
573 | | | | date: Thu Jan 01 00:00:16 1970 +0000
573 | | | | date: Thu Jan 01 00:00:16 1970 +0000
574 | | | | summary: (16) merge two known; one immediate right, one near right
574 | | | | summary: (16) merge two known; one immediate right, one near right
575 | | | |
575 | | | |
576 o | | | changeset: 15:1dda3f72782d
576 o | | | changeset: 15:1dda3f72782d
577 |\ \ \ \ parent: 13:22d8966a97e3
577 |\ \ \ \ parent: 13:22d8966a97e3
578 | | | | | parent: 14:8eac370358ef
578 | | | | | parent: 14:8eac370358ef
579 | | | | | user: test
579 | | | | | user: test
580 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
580 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
581 | | | | | summary: (15) expand
581 | | | | | summary: (15) expand
582 | | | | |
582 | | | | |
583 | o | | | changeset: 14:8eac370358ef
583 | o | | | changeset: 14:8eac370358ef
584 | |/ / / parent: 0:e6eb3150255d
584 | |/ / / parent: 0:e6eb3150255d
585 | | | | parent: 12:86b91144a6e9
585 | | | | parent: 12:86b91144a6e9
586 | | | | user: test
586 | | | | user: test
587 | | | | date: Thu Jan 01 00:00:14 1970 +0000
587 | | | | date: Thu Jan 01 00:00:14 1970 +0000
588 | | | | summary: (14) merge two known; one immediate right, one far right
588 | | | | summary: (14) merge two known; one immediate right, one far right
589 | | | |
589 | | | |
590 o | | | changeset: 13:22d8966a97e3
590 o | | | changeset: 13:22d8966a97e3
591 |\ \ \ \ parent: 9:7010c0af0a35
591 |\ \ \ \ parent: 9:7010c0af0a35
592 | | | | | parent: 11:832d76e6bdf2
592 | | | | | parent: 11:832d76e6bdf2
593 | | | | | user: test
593 | | | | | user: test
594 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
594 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
595 | | | | | summary: (13) expand
595 | | | | | summary: (13) expand
596 | | | | |
596 | | | | |
597 +---o | | changeset: 12:86b91144a6e9
597 +---o | | changeset: 12:86b91144a6e9
598 | | / / parent: 1:6db2ef61d156
598 | | / / parent: 1:6db2ef61d156
599 | | | | parent: 9:7010c0af0a35
599 | | | | parent: 9:7010c0af0a35
600 | | | | user: test
600 | | | | user: test
601 | | | | date: Thu Jan 01 00:00:12 1970 +0000
601 | | | | date: Thu Jan 01 00:00:12 1970 +0000
602 | | | | summary: (12) merge two known; one immediate right, one far left
602 | | | | summary: (12) merge two known; one immediate right, one far left
603 | | | |
603 | | | |
604 | o | | changeset: 11:832d76e6bdf2
604 | o | | changeset: 11:832d76e6bdf2
605 | | | | parent: 6:b105a072e251
605 | | | | parent: 6:b105a072e251
606 | | | | parent: 10:74c64d036d72
606 | | | | parent: 10:74c64d036d72
607 | | | | user: test
607 | | | | user: test
608 | | | | date: Thu Jan 01 00:00:11 1970 +0000
608 | | | | date: Thu Jan 01 00:00:11 1970 +0000
609 | | | | summary: (11) expand
609 | | | | summary: (11) expand
610 | | | |
610 | | | |
611 | o | | changeset: 10:74c64d036d72
611 | o | | changeset: 10:74c64d036d72
612 | | | | parent: 0:e6eb3150255d
612 | | | | parent: 0:e6eb3150255d
613 | | | | parent: 6:b105a072e251
613 | | | | parent: 6:b105a072e251
614 | | | | user: test
614 | | | | user: test
615 | | | | date: Thu Jan 01 00:00:10 1970 +0000
615 | | | | date: Thu Jan 01 00:00:10 1970 +0000
616 | | | | summary: (10) merge two known; one immediate left, one near right
616 | | | | summary: (10) merge two known; one immediate left, one near right
617 | | | |
617 | | | |
618 o | | | changeset: 9:7010c0af0a35
618 o | | | changeset: 9:7010c0af0a35
619 | | | | parent: 7:b632bb1b1224
619 | | | | parent: 7:b632bb1b1224
620 | | | | parent: 8:7a0b11f71937
620 | | | | parent: 8:7a0b11f71937
621 | | | | user: test
621 | | | | user: test
622 | | | | date: Thu Jan 01 00:00:09 1970 +0000
622 | | | | date: Thu Jan 01 00:00:09 1970 +0000
623 | | | | summary: (9) expand
623 | | | | summary: (9) expand
624 | | | |
624 | | | |
625 o | | | changeset: 8:7a0b11f71937
625 o | | | changeset: 8:7a0b11f71937
626 | | | | parent: 0:e6eb3150255d
626 | | | | parent: 0:e6eb3150255d
627 | | | | parent: 7:b632bb1b1224
627 | | | | parent: 7:b632bb1b1224
628 | | | | user: test
628 | | | | user: test
629 | | | | date: Thu Jan 01 00:00:08 1970 +0000
629 | | | | date: Thu Jan 01 00:00:08 1970 +0000
630 | | | | summary: (8) merge two known; one immediate left, one far right
630 | | | | summary: (8) merge two known; one immediate left, one far right
631 | | | |
631 | | | |
632 o | | | changeset: 7:b632bb1b1224
632 o | | | changeset: 7:b632bb1b1224
633 | | | | parent: 2:3d9a33b8d1e1
633 | | | | parent: 2:3d9a33b8d1e1
634 | | | | parent: 5:4409d547b708
634 | | | | parent: 5:4409d547b708
635 | | | | user: test
635 | | | | user: test
636 | | | | date: Thu Jan 01 00:00:07 1970 +0000
636 | | | | date: Thu Jan 01 00:00:07 1970 +0000
637 | | | | summary: (7) expand
637 | | | | summary: (7) expand
638 | | | |
638 | | | |
639 | o | | changeset: 6:b105a072e251
639 | o | | changeset: 6:b105a072e251
640 |/ / / parent: 2:3d9a33b8d1e1
640 |/ / / parent: 2:3d9a33b8d1e1
641 | | | parent: 5:4409d547b708
641 | | | parent: 5:4409d547b708
642 | | | user: test
642 | | | user: test
643 | | | date: Thu Jan 01 00:00:06 1970 +0000
643 | | | date: Thu Jan 01 00:00:06 1970 +0000
644 | | | summary: (6) merge two known; one immediate left, one far left
644 | | | summary: (6) merge two known; one immediate left, one far left
645 | | |
645 | | |
646 o | | changeset: 5:4409d547b708
646 o | | changeset: 5:4409d547b708
647 | | | parent: 3:27eef8ed80b4
647 | | | parent: 3:27eef8ed80b4
648 | | | parent: 4:26a8bac39d9f
648 | | | parent: 4:26a8bac39d9f
649 | | | user: test
649 | | | user: test
650 | | | date: Thu Jan 01 00:00:05 1970 +0000
650 | | | date: Thu Jan 01 00:00:05 1970 +0000
651 | | | summary: (5) expand
651 | | | summary: (5) expand
652 | | |
652 | | |
653 o | | changeset: 4:26a8bac39d9f
653 o | | changeset: 4:26a8bac39d9f
654 | | | parent: 1:6db2ef61d156
654 | | | parent: 1:6db2ef61d156
655 | | | parent: 3:27eef8ed80b4
655 | | | parent: 3:27eef8ed80b4
656 | | | user: test
656 | | | user: test
657 | | | date: Thu Jan 01 00:00:04 1970 +0000
657 | | | date: Thu Jan 01 00:00:04 1970 +0000
658 | | | summary: (4) merge two known; one immediate left, one immediate right
658 | | | summary: (4) merge two known; one immediate left, one immediate right
659 | | |
659 | | |
660 o | | changeset: 3:27eef8ed80b4
660 o | | changeset: 3:27eef8ed80b4
661 | | | user: test
661 | | | user: test
662 | | | date: Thu Jan 01 00:00:03 1970 +0000
662 | | | date: Thu Jan 01 00:00:03 1970 +0000
663 | | | summary: (3) collapse
663 | | | summary: (3) collapse
664 | | |
664 | | |
665 o | | changeset: 2:3d9a33b8d1e1
665 o | | changeset: 2:3d9a33b8d1e1
666 |/ / user: test
666 |/ / user: test
667 | | date: Thu Jan 01 00:00:02 1970 +0000
667 | | date: Thu Jan 01 00:00:02 1970 +0000
668 | | summary: (2) collapse
668 | | summary: (2) collapse
669 | |
669 | |
670 o | changeset: 1:6db2ef61d156
670 o | changeset: 1:6db2ef61d156
671 |/ user: test
671 |/ user: test
672 | date: Thu Jan 01 00:00:01 1970 +0000
672 | date: Thu Jan 01 00:00:01 1970 +0000
673 | summary: (1) collapse
673 | summary: (1) collapse
674 |
674 |
675 o changeset: 0:e6eb3150255d
675 o changeset: 0:e6eb3150255d
676 user: test
676 user: test
677 date: Thu Jan 01 00:00:00 1970 +0000
677 date: Thu Jan 01 00:00:00 1970 +0000
678 summary: (0) root
678 summary: (0) root
679
679
680
680
681 Unused arguments:
681 Unused arguments:
682 $ hg glog -q foo bar
682 $ hg glog -q foo bar
683 hg glog: invalid arguments
683 hg glog: invalid arguments
684 hg glog [OPTION]... [FILE]
684 hg glog [OPTION]... [FILE]
685
685
686 show revision history alongside an ASCII revision graph
686 show revision history alongside an ASCII revision graph
687 [255]
687 [255]
688
688
689 Only one file is allowed:
690 $ hg log -G foo bar
691 abort: --graph option allows at most one file
692 [255]
693
689 Empty revision range - display nothing:
694 Empty revision range - display nothing:
690 $ hg glog -r 1..0
695 $ hg glog -r 1..0
691
696
692 From outer space:
697 From outer space:
693 $ cd ..
698 $ cd ..
694 $ hg glog -l1 repo
699 $ hg glog -l1 repo
695 @ changeset: 34:fea3ac5810e0
700 @ changeset: 34:fea3ac5810e0
696 | tag: tip
701 | tag: tip
697 | parent: 32:d06dffa21a31
702 | parent: 32:d06dffa21a31
698 | user: test
703 | user: test
699 | date: Thu Jan 01 00:00:34 1970 +0000
704 | date: Thu Jan 01 00:00:34 1970 +0000
700 | summary: (34) head
705 | summary: (34) head
701 |
706 |
702 $ hg glog -l1 repo/a
707 $ hg glog -l1 repo/a
703 @ changeset: 34:fea3ac5810e0
708 @ changeset: 34:fea3ac5810e0
704 | tag: tip
709 | tag: tip
705 | parent: 32:d06dffa21a31
710 | parent: 32:d06dffa21a31
706 | user: test
711 | user: test
707 | date: Thu Jan 01 00:00:34 1970 +0000
712 | date: Thu Jan 01 00:00:34 1970 +0000
708 | summary: (34) head
713 | summary: (34) head
709 |
714 |
710 $ hg glog -l1 repo/missing
715 $ hg glog -l1 repo/missing
711
716
712 File log with revs != cset revs:
717 File log with revs != cset revs:
713 $ hg init flog
718 $ hg init flog
714 $ cd flog
719 $ cd flog
715 $ echo one >one
720 $ echo one >one
716 $ hg add one
721 $ hg add one
717 $ hg commit -mone
722 $ hg commit -mone
718 $ echo two >two
723 $ echo two >two
719 $ hg add two
724 $ hg add two
720 $ hg commit -mtwo
725 $ hg commit -mtwo
721 $ echo more >two
726 $ echo more >two
722 $ hg commit -mmore
727 $ hg commit -mmore
723 $ hg glog two
728 $ hg glog two
724 @ changeset: 2:12c28321755b
729 @ changeset: 2:12c28321755b
725 | tag: tip
730 | tag: tip
726 | user: test
731 | user: test
727 | date: Thu Jan 01 00:00:00 1970 +0000
732 | date: Thu Jan 01 00:00:00 1970 +0000
728 | summary: more
733 | summary: more
729 |
734 |
730 o changeset: 1:5ac72c0599bf
735 o changeset: 1:5ac72c0599bf
731 user: test
736 user: test
732 date: Thu Jan 01 00:00:00 1970 +0000
737 date: Thu Jan 01 00:00:00 1970 +0000
733 summary: two
738 summary: two
734
739
735
740
736 Issue1896: File log with explicit style
741 Issue1896: File log with explicit style
737 $ hg glog --style=default one
742 $ hg glog --style=default one
738 o changeset: 0:3d578b4a1f53
743 o changeset: 0:3d578b4a1f53
739 user: test
744 user: test
740 date: Thu Jan 01 00:00:00 1970 +0000
745 date: Thu Jan 01 00:00:00 1970 +0000
741 summary: one
746 summary: one
742
747
743 Issue2395: glog --style header and footer
748 Issue2395: glog --style header and footer
744 $ hg glog --style=xml one
749 $ hg glog --style=xml one
745 <?xml version="1.0"?>
750 <?xml version="1.0"?>
746 <log>
751 <log>
747 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
752 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
748 <author email="test">test</author>
753 <author email="test">test</author>
749 <date>1970-01-01T00:00:00+00:00</date>
754 <date>1970-01-01T00:00:00+00:00</date>
750 <msg xml:space="preserve">one</msg>
755 <msg xml:space="preserve">one</msg>
751 </logentry>
756 </logentry>
752 </log>
757 </log>
753
758
754 $ cd ..
759 $ cd ..
755
760
756 Incoming and outgoing:
761 Incoming and outgoing:
757
762
758 $ hg clone -U -r31 repo repo2
763 $ hg clone -U -r31 repo repo2
759 adding changesets
764 adding changesets
760 adding manifests
765 adding manifests
761 adding file changes
766 adding file changes
762 added 31 changesets with 31 changes to 1 files
767 added 31 changesets with 31 changes to 1 files
763 $ cd repo2
768 $ cd repo2
764
769
765 $ hg incoming --graph ../repo
770 $ hg incoming --graph ../repo
766 comparing with ../repo
771 comparing with ../repo
767 searching for changes
772 searching for changes
768 o changeset: 34:fea3ac5810e0
773 o changeset: 34:fea3ac5810e0
769 | tag: tip
774 | tag: tip
770 | parent: 32:d06dffa21a31
775 | parent: 32:d06dffa21a31
771 | user: test
776 | user: test
772 | date: Thu Jan 01 00:00:34 1970 +0000
777 | date: Thu Jan 01 00:00:34 1970 +0000
773 | summary: (34) head
778 | summary: (34) head
774 |
779 |
775 | o changeset: 33:68608f5145f9
780 | o changeset: 33:68608f5145f9
776 | parent: 18:1aa84d96232a
781 | parent: 18:1aa84d96232a
777 | user: test
782 | user: test
778 | date: Thu Jan 01 00:00:33 1970 +0000
783 | date: Thu Jan 01 00:00:33 1970 +0000
779 | summary: (33) head
784 | summary: (33) head
780 |
785 |
781 o changeset: 32:d06dffa21a31
786 o changeset: 32:d06dffa21a31
782 | parent: 27:886ed638191b
787 | parent: 27:886ed638191b
783 | parent: 31:621d83e11f67
788 | parent: 31:621d83e11f67
784 | user: test
789 | user: test
785 | date: Thu Jan 01 00:00:32 1970 +0000
790 | date: Thu Jan 01 00:00:32 1970 +0000
786 | summary: (32) expand
791 | summary: (32) expand
787 |
792 |
788 o changeset: 27:886ed638191b
793 o changeset: 27:886ed638191b
789 parent: 21:d42a756af44d
794 parent: 21:d42a756af44d
790 user: test
795 user: test
791 date: Thu Jan 01 00:00:27 1970 +0000
796 date: Thu Jan 01 00:00:27 1970 +0000
792 summary: (27) collapse
797 summary: (27) collapse
793
798
794 $ cd ..
799 $ cd ..
795
800
796 $ hg -R repo outgoing --graph repo2
801 $ hg -R repo outgoing --graph repo2
797 comparing with repo2
802 comparing with repo2
798 searching for changes
803 searching for changes
799 @ changeset: 34:fea3ac5810e0
804 @ changeset: 34:fea3ac5810e0
800 | tag: tip
805 | tag: tip
801 | parent: 32:d06dffa21a31
806 | parent: 32:d06dffa21a31
802 | user: test
807 | user: test
803 | date: Thu Jan 01 00:00:34 1970 +0000
808 | date: Thu Jan 01 00:00:34 1970 +0000
804 | summary: (34) head
809 | summary: (34) head
805 |
810 |
806 | o changeset: 33:68608f5145f9
811 | o changeset: 33:68608f5145f9
807 | parent: 18:1aa84d96232a
812 | parent: 18:1aa84d96232a
808 | user: test
813 | user: test
809 | date: Thu Jan 01 00:00:33 1970 +0000
814 | date: Thu Jan 01 00:00:33 1970 +0000
810 | summary: (33) head
815 | summary: (33) head
811 |
816 |
812 o changeset: 32:d06dffa21a31
817 o changeset: 32:d06dffa21a31
813 | parent: 27:886ed638191b
818 | parent: 27:886ed638191b
814 | parent: 31:621d83e11f67
819 | parent: 31:621d83e11f67
815 | user: test
820 | user: test
816 | date: Thu Jan 01 00:00:32 1970 +0000
821 | date: Thu Jan 01 00:00:32 1970 +0000
817 | summary: (32) expand
822 | summary: (32) expand
818 |
823 |
819 o changeset: 27:886ed638191b
824 o changeset: 27:886ed638191b
820 parent: 21:d42a756af44d
825 parent: 21:d42a756af44d
821 user: test
826 user: test
822 date: Thu Jan 01 00:00:27 1970 +0000
827 date: Thu Jan 01 00:00:27 1970 +0000
823 summary: (27) collapse
828 summary: (27) collapse
824
829
825
830
826 File + limit with revs != cset revs:
831 File + limit with revs != cset revs:
827 $ cd repo
832 $ cd repo
828 $ touch b
833 $ touch b
829 $ hg ci -Aqm0
834 $ hg ci -Aqm0
830 $ hg glog -l2 a
835 $ hg glog -l2 a
831 o changeset: 34:fea3ac5810e0
836 o changeset: 34:fea3ac5810e0
832 | parent: 32:d06dffa21a31
837 | parent: 32:d06dffa21a31
833 | user: test
838 | user: test
834 | date: Thu Jan 01 00:00:34 1970 +0000
839 | date: Thu Jan 01 00:00:34 1970 +0000
835 | summary: (34) head
840 | summary: (34) head
836 |
841 |
837 | o changeset: 33:68608f5145f9
842 | o changeset: 33:68608f5145f9
838 | | parent: 18:1aa84d96232a
843 | | parent: 18:1aa84d96232a
839 | | user: test
844 | | user: test
840 | | date: Thu Jan 01 00:00:33 1970 +0000
845 | | date: Thu Jan 01 00:00:33 1970 +0000
841 | | summary: (33) head
846 | | summary: (33) head
842 | |
847 | |
843
848
844 File + limit + -ra:b, (b - a) < limit:
849 File + limit + -ra:b, (b - a) < limit:
845 $ hg glog -l3000 -r32:tip a
850 $ hg glog -l3000 -r32:tip a
846 o changeset: 34:fea3ac5810e0
851 o changeset: 34:fea3ac5810e0
847 | parent: 32:d06dffa21a31
852 | parent: 32:d06dffa21a31
848 | user: test
853 | user: test
849 | date: Thu Jan 01 00:00:34 1970 +0000
854 | date: Thu Jan 01 00:00:34 1970 +0000
850 | summary: (34) head
855 | summary: (34) head
851 |
856 |
852 | o changeset: 33:68608f5145f9
857 | o changeset: 33:68608f5145f9
853 | | parent: 18:1aa84d96232a
858 | | parent: 18:1aa84d96232a
854 | | user: test
859 | | user: test
855 | | date: Thu Jan 01 00:00:33 1970 +0000
860 | | date: Thu Jan 01 00:00:33 1970 +0000
856 | | summary: (33) head
861 | | summary: (33) head
857 | |
862 | |
858 o | changeset: 32:d06dffa21a31
863 o | changeset: 32:d06dffa21a31
859 |\ \ parent: 27:886ed638191b
864 |\ \ parent: 27:886ed638191b
860 | | | parent: 31:621d83e11f67
865 | | | parent: 31:621d83e11f67
861 | | | user: test
866 | | | user: test
862 | | | date: Thu Jan 01 00:00:32 1970 +0000
867 | | | date: Thu Jan 01 00:00:32 1970 +0000
863 | | | summary: (32) expand
868 | | | summary: (32) expand
864 | | |
869 | | |
865
870
866 File + limit + -ra:b, b < tip:
871 File + limit + -ra:b, b < tip:
867 $ hg glog -l1 -r32:34 a
872 $ hg glog -l1 -r32:34 a
868 o changeset: 34:fea3ac5810e0
873 o changeset: 34:fea3ac5810e0
869 | parent: 32:d06dffa21a31
874 | parent: 32:d06dffa21a31
870 | user: test
875 | user: test
871 | date: Thu Jan 01 00:00:34 1970 +0000
876 | date: Thu Jan 01 00:00:34 1970 +0000
872 | summary: (34) head
877 | summary: (34) head
873 |
878 |
874
879
875 File + limit + -ra:b, b < tip, (b - a) < limit:
880 File + limit + -ra:b, b < tip, (b - a) < limit:
876 $ hg glog -l10 -r33:34 a
881 $ hg glog -l10 -r33:34 a
877 o changeset: 34:fea3ac5810e0
882 o changeset: 34:fea3ac5810e0
878 | parent: 32:d06dffa21a31
883 | parent: 32:d06dffa21a31
879 | user: test
884 | user: test
880 | date: Thu Jan 01 00:00:34 1970 +0000
885 | date: Thu Jan 01 00:00:34 1970 +0000
881 | summary: (34) head
886 | summary: (34) head
882 |
887 |
883 | o changeset: 33:68608f5145f9
888 | o changeset: 33:68608f5145f9
884 | | parent: 18:1aa84d96232a
889 | | parent: 18:1aa84d96232a
885 | | user: test
890 | | user: test
886 | | date: Thu Jan 01 00:00:33 1970 +0000
891 | | date: Thu Jan 01 00:00:33 1970 +0000
887 | | summary: (33) head
892 | | summary: (33) head
888 | |
893 | |
889
894
890 Do not crash or produce strange graphs if history is buggy
895 Do not crash or produce strange graphs if history is buggy
891
896
892 $ commit 36 "buggy merge: identical parents" 35 35
897 $ commit 36 "buggy merge: identical parents" 35 35
893 $ hg glog -l5
898 $ hg glog -l5
894 @ changeset: 36:95fa8febd08a
899 @ changeset: 36:95fa8febd08a
895 | tag: tip
900 | tag: tip
896 | parent: 35:9159c3644c5e
901 | parent: 35:9159c3644c5e
897 | parent: 35:9159c3644c5e
902 | parent: 35:9159c3644c5e
898 | user: test
903 | user: test
899 | date: Thu Jan 01 00:00:36 1970 +0000
904 | date: Thu Jan 01 00:00:36 1970 +0000
900 | summary: (36) buggy merge: identical parents
905 | summary: (36) buggy merge: identical parents
901 |
906 |
902 o changeset: 35:9159c3644c5e
907 o changeset: 35:9159c3644c5e
903 | user: test
908 | user: test
904 | date: Thu Jan 01 00:00:00 1970 +0000
909 | date: Thu Jan 01 00:00:00 1970 +0000
905 | summary: 0
910 | summary: 0
906 |
911 |
907 o changeset: 34:fea3ac5810e0
912 o changeset: 34:fea3ac5810e0
908 | parent: 32:d06dffa21a31
913 | parent: 32:d06dffa21a31
909 | user: test
914 | user: test
910 | date: Thu Jan 01 00:00:34 1970 +0000
915 | date: Thu Jan 01 00:00:34 1970 +0000
911 | summary: (34) head
916 | summary: (34) head
912 |
917 |
913 | o changeset: 33:68608f5145f9
918 | o changeset: 33:68608f5145f9
914 | | parent: 18:1aa84d96232a
919 | | parent: 18:1aa84d96232a
915 | | user: test
920 | | user: test
916 | | date: Thu Jan 01 00:00:33 1970 +0000
921 | | date: Thu Jan 01 00:00:33 1970 +0000
917 | | summary: (33) head
922 | | summary: (33) head
918 | |
923 | |
919 o | changeset: 32:d06dffa21a31
924 o | changeset: 32:d06dffa21a31
920 |\ \ parent: 27:886ed638191b
925 |\ \ parent: 27:886ed638191b
921 | | | parent: 31:621d83e11f67
926 | | | parent: 31:621d83e11f67
922 | | | user: test
927 | | | user: test
923 | | | date: Thu Jan 01 00:00:32 1970 +0000
928 | | | date: Thu Jan 01 00:00:32 1970 +0000
924 | | | summary: (32) expand
929 | | | summary: (32) expand
925 | | |
930 | | |
General Comments 0
You need to be logged in to leave comments. Login now