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