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