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